rct*_*eil 4 import ruby-on-rails 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方法有效,但是当他们进行touch可记录的事件时,paper_trail弃用了此方法。
在最新版本的paper_trail上,您可以执行以下操作:
model.paper_trail.save_with_version
Run Code Online (Sandbox Code Playgroud)
如果您使用的是旧版本,并且此版本不可用,则可以使用该record_update方法(这是save_with_version内部使用的方法):
model.paper_trail.record_update(force: true, in_after_callback: false)
Run Code Online (Sandbox Code Playgroud)
无法自定义事件...您可以创建,还原,更新和触摸,但不能做为像“手动”那样记录下来的事情,至少在没有大量猴子补丁或其他事情的情况下。
甚至这样做也有些背叛,因为您要调用的某些内部组件可能会在将来的版本中更改。它还具有一些必需的参数,这些参数已随着版本的不同而变化。
就我而言,我正在一起使用paper_trail和妄想症,并希望在还原时记录一个明确的版本,除非您执行上述操作,否则似乎绕过paper_trail。
如果有人偶然发现这个问题:这是可能的!您可以touch_with_version像这样调用任何 PaperTrail 模型:mymodel.paper_trail.touch_with_version。它将为您创建一个版本。
| 归档时间: |
|
| 查看次数: |
1828 次 |
| 最近记录: |