当我将rails 3.2迁移到rails 4.2时,我使用paper_trail跟踪跨国变化,有以下问题:
NoMethodError - 未定义的方法`timestamp_sort_order'对
答案 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