在我的主页上,我使用papertrail显示最新的更新。
控制器
@contributions = PaperTrail::Version.all.order("created_at DESC")
查看
<% @contributions.each do |v| %>
<h2><%= v.item.name %><small>by </small></h2>
<% v.changeset.each do |data| %>
<h4><%= data %></h4>
<% end %>
<%= v.whodunnit %>
<% end %>
在这里,我获得了关联用户,但只获得了带有whodunnit的ID,但我希望获得一个用户实例来获取用户名。所以v.whodunnit我想要v.user.username。
我一直在关注similar question,但似乎无法找到创建版本与用户之间关系的方法。
用户模型
class User < ActiveRecord::Base
has_many :versions, :foreign_key => 'whodunnit', :class_name => "PaperTrail::Version"
end
版本模型
class Version < PaperTrail::Version
belongs_to :user, :foreign_key => 'whodunnit'
end
修改
当我有&lt;%= v.user%&gt;时,我得到了这个在视野中
undefined method `user' for #<PaperTrail::Version:0x007fb24c08e868>
答案 0 :(得分:3)
还有另一种方法:
class Version < PaperTrail::Version
...
def user
User.find(whodunnit) if whodunnit
end
end
如果您需要将用户模型添加到PaperTrail::Version
类本身,请为您的应用添加新的初始值设定项:
<强>配置/初始化/ papertrail_monkey_patch.rb 强>
module PaperTrail
class Version
def user
User.find(whodunnit) if whodunnit
end
end
end
答案 1 :(得分:2)
Rails 5.X的更新版本
# config/initializers/paper_trail.rb
PaperTrail::Rails::Engine.eager_load!
module PaperTrail
class Version < ::ActiveRecord::Base
belongs_to :user, foreign_key: :whodunnit
end
end
答案 2 :(得分:0)
您可以将关系添加到版本模型
<强>配置/初始化/ paper_trail.rb 强>
# paper trail config ...
# ...
module PaperTrail
class Version < ::ActiveRecord::Base
belongs_to :user, foreign_key: :whodunnit
end
end