NoMethodError - 未定义的方法`timestamp_sort_order'升级Rails 4.2后的Paper Trail问题

时间:2015-07-30 06:51:00

标签: ruby ruby-on-rails-4.2 paper-trail-gem

当我将rails 3.2迁移到rails 4.2时,我使用paper_trail跟踪跨国变化,有以下问题:

  

NoMethodError - 未定义的方法`timestamp_sort_order'对

3 个答案:

答案 0 :(得分:4)

我通过在intializer paper_trail.rb文件中添加以下行来修复此问题

PaperTrail::Rails::Engine.eager_load!

查看我的最终intializers / paper_trail.rb文件

PaperTrail::Rails::Engine.eager_load!

module PaperTrail

  class Version < ActiveRecord::Base
    .....
  end

end

问题解决了......

答案 1 :(得分:0)

在rails 6.0.0beta3上忘记了此操作,因为我修补了papertrail,却忘记添加PaperTrail::VersionConcern,例如:

module PaperTrail
  class Version < ::ActiveRecord::Base
    include PaperTrail::VersionConcern
  end
end

PaperTrail::Rails::Engine.eager_load!并没有为我修复

看着source code,它是直接在ActiveRecord::Base模型上调用的,它是在PaperTrail::VersionConcern上定义的。

答案 2 :(得分:0)

在Rails 6中,首选的方法现在是创建模型,不要将模型代码放在初始化程序中。这就是我正在使用的...

module PaperTrail
  class Version < ::ActiveRecord::Base
    include PaperTrail::VersionConcern

    belongs_to :user, foreign_key: :whodunnit
  end
end