我有一个城市类,其版本由PaperTrail控制。我的系统有被Devise管理的用户。我希望在城市类的特定版本和编辑此版本的用户之间建立关系。
为了实现这个目标,我尝试使用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上的"user"方法?
附注:我不确定是否应该像我所做的那样创建一个Model PaperTrail::Version,但我没有找到其他方向。
has_paper_trail :class_name => 'Version'
可以不用在has_paper_trail
后面加逗号。 - Nobuhas_paper_trail versions: { class_name: 'Version' }
- FabienChn