Ruby on rails 我不希望通过alias_方法修改的模型类的未定义方法

Ruby on rails 我不希望通过alias_方法修改的模型类的未定义方法,ruby-on-rails,ruby,model,alias-method,Ruby On Rails,Ruby,Model,Alias Method,我尝试对ActiveRecord模型验证进行路径设置- require_dependency "issue" module IssuePath def self.included(base) # :nodoc: base.send(:include, InstanceMethods) base.class_eval do alias_method :strict_validate_issue, :validate_issue alias_method

我尝试对ActiveRecord模型验证进行路径设置-

require_dependency "issue"
module IssuePath
  def self.included(base) # :nodoc:
    base.send(:include, InstanceMethods)

    base.class_eval do
      alias_method :strict_validate_issue, :validate_issue
      alias_method :validate_issue, :unstrict_validate_issue 
    end
  end

  module ClassMethods   
  end

  module InstanceMethods
    def strict_validate_issue
      if !due_date
          errors.add :due_date, :due_date_empty
      end
      unstrict_validate_issue
    end
  end
end

Issue.send :include, IssuePath

但它抛出了一个错误名称error:undefined方法
unstrict\u validate\u issue',用于类
issue(调用'issue.connection'建立连接)

而不是
strict\u validate\u issue
定义
unstrict\u validate\u issue
方法并在其内部调用
strict\u validate\u issue

require_dependency "issue"
module IssuePath
  def self.included(base) # :nodoc:
    base.send(:include, InstanceMethods)

    base.class_eval do
      alias_method :strict_validate_issue, :validate_issue
      alias_method :validate_issue, :unstrict_validate_issue
    end
  end

  module ClassMethods
  end

  module InstanceMethods
    def unstrict_validate_issue
      if due_date.blank?
        errors.add :due_date, :due_date_empty
      end
      strict_validate_issue
    end
  end
end

Issue.send :include, IssuePath
您甚至可以将其缩短:

require_dependency "issue"
module IssuePath
  extend ActiveSupport::Concern

  included do
    alias_method :strict_validate_issue, :validate_issue
    alias_method :validate_issue, :unstrict_validate_issue
  end

  def unstrict_validate_issue
    if due_date.blank?
      errors.add :due_date, :due_date_empty
    end
    strict_validate_issue
  end
end

Issue.send :include, IssuePath