我有一个 City 类,它的版本由 PaperTrail 控制。我的系统有由 Devise 管理的用户。我想在编辑特定版本的 City 类的用户之间建立关系。
为此,我使用 Rails 3.2.15 和 Paper Trail 3.0.0 尝试了以下配置:
class City < ActiveRecord::Base
has_paper_trail
end
class User < ActiveRecord::Base
has_many :editions, :foreign_key => 'whodunnit', :class_name => "PaperTrail::Version"
end
class PaperTrail::Version < ActiveRecord::Base
belongs_to :user
end
有了这个,我可以拥有特定用户制作的版本,例如:
User.last.editions
从最后一个用户获取版本列表(PaperTrail::Version 对象)。
然后我认为拥有编辑特定城市的用户实例会很简单,例如,获取编辑第一个城市的最后一个版本的用户的用户实例:
# NoMethodError: undefined method `user' for #<PaperTrail::Version:0x000000051d0da8>
City.first.versions.last.user
如果不是这样,我应该如何配置我的模型以访问 PaperTrail::Version 上的“用户”方法?
Ps.:我不确定我是否应该像我一样创建一个 Model PaperTrail::Version,但我没有想出另一个方向。