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

bla*_*zoo 22 associations has-many ruby-on-rails-3.1 paper-trail-gem

我在rails中使用paper_trail来跟踪我的模型版本.但在GitHub库的文件表明,创业板不支持has_many,belongs_to协会.

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

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

class Ceo < ActiveRecord::Base
  belongs_to :companies
  has_paper_trail
end
Run Code Online (Sandbox Code Playgroud)

以上示例代表ABC Inc.的信息.

company.name => "ABC"
company.ceo.past => "John Henry"
company.ceo.present =>  "Amy Warren"
Run Code Online (Sandbox Code Playgroud)

如何实施以下操作,以便将公司和公司的ceos名称重置为上一版本?

Boo*_*reg 1

您可以尝试重新建模关联以删除 has_many,因为就 CEO 而言,一家公司在其生命周期中可能拥有多位 CEO,但在特定时期内只有一位 CEO。

其实现可能是一个连接表的 has_one,该连接表由 CEO 和公司的 ID 及其有效时间段组成。

一个有益的副作用是,让一个人两次担任一家公司的首席执行官,中间有另一位首席执行官,并且可以轻松地在域中进行遍历,这将变得微不足道。