ruby-on-rails - 如何将方法添加到 Paper_trail 的版本模型?

标签 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 的版本模型?

最佳答案

您可以将它放在一个初始化程序中(例如,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/

相关文章:

ruby-on-rails - 什么是缩放?

javascript - Rails 根据下拉选择将参数附加到 URL

mysql - has_many ,通过 : relationship count

ruby - 多个变量合二为一 - Rails

ruby-on-rails-3 - Rails查询速度

ruby-on-rails - 从共享的局部 View 或替代解决方案中删除条件逻辑

html - 在 Rails 中检查 HTTP 状态码

ruby - 通过基于 TLS/SSL 的 FTP 连接到未经认证的主机

ruby - -@ 运算符在 Ruby 中做什么?

ruby-on-rails - 具有父引用的 Mongoid 为空