gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:08:46 33 4
gpt4 key购买 nike

我有一个项目的电子表格,我将其转换为 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com