如何纠正has_many / belongs_to与paper_trail关联的版本

时间:2012-04-01 01:04:08

标签: ruby-on-rails-3.1 associations has-many paper-trail-gem

我在rails中使用paper_trail来跟踪我的模型版本。但是github repo上的文档表明gem不支持has_manybelongs_to关联。

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

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"

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

2 个答案:

答案 0 :(得分:1)

您可以尝试重新建立关联模型以删除has_many,因为在CEO的情况下,公司可能在其生命中拥有多名CEO,但在一段时间内它只有CEO。

此实施可能是由CEO和公司的ID以及有效的时间段组成的联接表的has_one。

一个有益的副作用是让一个人成为公司的首席执行官两次与另一位首席执行官之间的关系变得微不足道,并在该领域轻松遍历。

答案 1 :(得分:0)

有关如何处理此问题的说明,请参阅自述文件:https://github.com/airblade/paper_trail/blob/master/README.md#associations

基本上需要在安装时使用version_associations选项创建rails generate paper_trail:install --with-associations表,或者手动为此工作。

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