我想为 paper_trail 版本创建以下方法:
def user
User.find self.whodunnit.to_i
end
这样我就可以在我的应用程序中自然地访问版本的用户,就好像它具有 belongs_to
关系一样。
我应该把这个函数放在哪里(文件夹和文件名)以便覆盖/添加它到 paper_trail 的版本模型?
最佳答案
您可以将它放在一个初始化程序中(例如,config/initializers/paper_trail.rb
),它会打开 PaperTrail::Version
类:
module PaperTrail
class Version < ActiveRecord::Base
def user
User.find self.whodunnit.to_i
end
end
end
您需要确认您的Version
模型是PaperTrail::Version
;旧版本的 gem 仅使用 Version
。在这种情况下,只需删除外部模块语句即可。
您还可以创建一个继承自 Version
的自定义类,并在您的 has_paper_trail
调用中指定它。例如(来自自述文件):
class PostVersion < PaperTrail::Version
# custom behaviour, e.g:
self.table_name = :post_versions
end
class Post < ActiveRecord::Base
has_paper_trail :class_name => 'PostVersion'
end
关于ruby-on-rails - 如何将方法添加到 Paper_trail 的版本模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20982804/