如何使用paper_trail修正has_many/belongs_to关联的版本问题

22

我在Rails中使用paper_trail来跟踪我的模型版本。但是github存储库中的文档表明,该宝石不支持has_manybelongs_to关联。

假设我有一个记录一些公司CEO名称的应用程序:

class Company < ActiveRecord::Base
  has_many :ceos
  has_paper_trail
end

class Ceo < ActiveRecord::Base
  belongs_to :companies
  has_paper_trail
end

上面的例子代表了ABC公司的信息。

company.name => "ABC"
company.ceo.past => "John Henry"
company.ceo.present =>  "Amy Warren"

我该如何实现以下操作,使其将公司和公司的CEO名称重置为上一个版本?


1
你有关于这个的任何更新吗? - Robin
1
我也遇到了同样的问题。 - eshaiju
你找到解决方案了吗? - Zahid
2个回答

1
你可以尝试重新设计关联,以去除has_many。因为在CEO的情况下,一家公司可能会在其生命周期内有许多个CEO,但在某个特定时期内只有一个CEO。
实现这一点的方法可能是将has_one作为连接表,由CEO和公司的ID以及有效时间段组成。
一个有益的副作用是,如果一个人两次成为一家公司的CEO,并且在中间有另一个CEO,那么在领域中遍历将变得容易。

0

如何处理此问题的说明可以在 README 中找到:https://github.com/airblade/paper_trail/blob/master/README.md#associations

基本上,您需要创建一个version_associations表,可以使用rails generate paper_trail:install --with-associations选项在安装时自动创建,或手动创建以使其正常工作。

我建议您阅读 Github 上的完整文档,以了解其详细信息。


这完全没有回答问题。你只是复制并粘贴了这个主题上写得很差的指令。 - dane
@dane 也许你可以通过编辑问题并更清晰地表达OP的要求来帮助我和其他人吗? - Jonas Schubert Erlandsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接