22

我在 rails 中使用 paper_trail 来跟踪我的模型版本。但是 github repo 上的文档表明 gem 不支持has_many,belongs_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 Inc. 的信息。

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

如何执行以下操作,以便将公司和公司的 CEO 名称重置为最新版本?

4

2 回答 2

1

您可以尝试对关联进行重新建模以删除 has_many,因为在 CEO 的情况下,公司可能在其一生中拥有_many CEO,但它在特定时期内只有_one CEO。

这可能是由 CEO 和公司的 ID 及其有效时间段组成的连接表的 has_one。

一个有益的副作用是,让一个人成为一家公司的 CEO 2 次,而另一位 CEO 介于两者之间,并且可以轻松地在该领域进行遍历,这将变得微不足道。

于 2014-02-01T11:28:56.163 回答
0

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

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

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

于 2015-04-23T05:54:46.200 回答