如何将方法添加到Paper_trail的版本模型?

时间:2014-01-07 21:58:09

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我想为paper_trail版本创建以下方法:

def user
  User.find self.whodunnit.to_i
end

这样我就可以在我的应用中自然地访问版本的用户,就像它有belongs_to关系一样。

我应该在哪里放置此功能(文件夹和文件名)以覆盖/添加到paper_trail的版本模型?

1 个答案:

答案 0 :(得分:5)

您可以将其放入打开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调用中指定该类。例如(来自README):

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