Ruby on rails 我不希望通过alias_方法修改的模型类的未定义方法
我尝试对ActiveRecord模型验证进行路径设置-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
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