ruby-on-rails - PaperTrail 手动创建版本

标签 ruby-on-rails import version spreadsheet paper-trail-gem

我有一个项目的电子表格,我将其转换为 CSV 并使用自定义导入脚本将其导入到基于 Rails 的应用程序中。

电子表格为每条记录包含一行,但有些行包含前一行的不同版本。

导入 CSV 时,我目前使用“past_version”字段标记第二行,但我现在认为实现完整版本控制 gem 将是一个更好的方法。

我一直在阅读 PaperTrail 的文档,它看起来非常适合我所追求的内容,但是,我需要将某些行的版本创建为导入脚本的一部分。这可以用 PaperTrail 完成吗?

基本上我需要开始导入,比如说正常添加记录 1、2、3、4、5,然后记录 6 实际上是记录 2 的更新版本,所以我现在需要手动创建一个 PaperTrail 版本。

这可能吗?

最佳答案

@Flori 的 touch_with_version 方法有效,但是 paper_trail 在制作 touch 时弃用了此方法可记录的事件。

在最新版本的 paper_trail 上,您可以执行以下操作:

model.paper_trail.save_with_version

如果您使用的是旧版本,并且此版本不可用,您可以使用 record_update方法(这是 save_with_version 在内部使用的):
model.paper_trail.record_update(force: true, in_after_callback: false)

没有办法自定义事件……你可以创建、恢复、更新和触摸,但不能做一些像将它记录为“手动”的事情,至少在没有很多猴子补丁或其他东西的情况下是这样。

即使这样做也有点危险,因为您正在调用一些可能在 future 版本中更改的内部结构。它也有一些必需的参数,这些参数随着版本的不同而改变。

就我而言,我同时使用 paper_trail 和偏执狂,并希望在恢复时记录一个显式版本,除非您执行上述操作,否则该版本似乎绕过了 paper_trail。

关于ruby-on-rails - PaperTrail 手动创建版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27804421/

相关文章:

ruby-on-rails - Rails Ember 混合应用程序

ruby-on-rails - Rails 中的 byebug 入门

ruby-on-rails - 在 FactoryGirl 中使用 'default' trait 来避免不必要的关联创建

sql-server - 将accdb格式的Access数据库导入SQL Server 2014(Express版)

javascript - 如何自动更新url中js文件的版本

用于操作系统检测的 PHP 正则表达式

ruby-on-rails - 在rails公共(public)目录中安装wordpress

r - 如何检查 CSV 文件是否有逗号或分号作为分隔符?

python - 导入我的类时,我无法访问其他模块的函数

android - Jsoup 的版本检查器不再工作