NoMethodError - 升级 Rails 4.2 后,未定义方法“timestamp_sort_order”用于纸质跟踪问题

Ram*_*are 6 ruby paper-trail-gem ruby-on-rails-4.2

当我将 Rails 3.2 迁移到 Rails 4.2 时,我使用 paper_trail 来跟踪跨国更改,遇到以下问题:

NoMethodError - 未定义方法“timestamp_sort_order”

loc*_*dev 8

在 Rails 6.0.0beta3 上得到这个,因为我修补了 papertrail 并忘记添加PaperTrail::VersionConcern,例如:

module PaperTrail
  class Version < ::ActiveRecord::Base
    include PaperTrail::VersionConcern
  end
end
Run Code Online (Sandbox Code Playgroud)

PaperTrail::Rails::Engine.eager_load!没有帮我修好

查看源代码,它直接在ActiveRecord::Base模型上调用它,它是在PaperTrail::VersionConcern.


Ram*_*are 4

我通过在初始化程序 paper_trail.rb 文件中添加以下行来修复此问题

PaperTrail::Rails::Engine.eager_load!
Run Code Online (Sandbox Code Playgroud)

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

PaperTrail.config.track_associations = false

PaperTrail::Rails::Engine.eager_load!

module PaperTrail

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

end
Run Code Online (Sandbox Code Playgroud)

问题解决了....

已更新我的答案,添加了以下额外行,将其与 Rails 5.2 一起使用

PaperTrail.config.track_associations = false
Run Code Online (Sandbox Code Playgroud)