【问题标题】:Papertrail 10.2.1 undefined method `timestamp_sort_order' for ClassPapertrail 10.2.1 类的未定义方法“timestamp_sort_order”
【发布时间】:2019-08-23 12:49:04
【问题描述】:

我在 My Rails 5.2.1 和 Ruby 2.5.1 中使用 paper_trail (https://github.com/paper-trail-gem/paper_trail)。我的模型和控制器包含以下代码

class ModelName < ApplicationRecord    
   has_paper_trail versions: { class_name: "History" }, ignore:  [:updated_at] 
end

class ApplicationController < ActionController::Base
   before_action :set_paper_trail_whodunnit
   def current_user
     if !(@current_user)
       @current_user = current_user_session && current_user_session.user
    end
    return @current_user
  end
end

当我试图保存它给出的特定模型的记录时

 undefined method `timestamp_sort_order' for <Class>

我已经尝试过这个解决方案NoMethodError - undefined method `timestamp_sort_order' for Paper trail issue after upgrading Rails 4.2 但它仍然无法正常工作。

我检查了paper trail gem,发现这个方法是类级别的方法,它在我的History模型中不可用。

PS:我正在使用 authlogic (https://github.com/binarylogic/authlogic) 进行身份验证。

【问题讨论】:

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


    【解决方案1】:

    我也被这个升级到 rails-6.0 所吸引。最后在修复它的文档中找到了这个:

    如果您只使用自定义版本类并且没有版本表, 您必须让 ActiveRecord 知道 PaperTrail::Version 类是 抽象类。

    # app/models/paper_trail/version.rb
    module PaperTrail
      class Version < ActiveRecord::Base
        include PaperTrail::VersionConcern
        self.abstract_class = true
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 2022-12-23
      • 1970-01-01
      • 2012-11-09
      相关资源
      最近更新 更多