我在rails中使用paper_trail来跟踪我的模型版本。但是github存储库上的文档表明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 Inc.的信息。
company.name => "ABC"
company.ceo.past => "John Henry"
company.ceo.present =>  "Amy Warren"

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

最佳答案

您可以尝试重新构建关联模型以删除has_many,因为对于CEO而言,公司在其一生中可能会有很多CEO,但在特定时期内只有一个CEO。

这的实现可能是对由CEO和Company的ID以及有效时间段组成的联接表的has_one。

一个有益的副作用是,一个人两次担任公司首席执行官,中间又有另一位首席执行官,并且很容易在 Realm 中进行遍历,这将变得微不足道。

08-26 08:39