Ruby on rails Redmine:如何覆盖模型方法可见的条件
我想用我的插件覆盖model方法。我尝试创建一个新的模型修补程序,其方法应如下所示:Ruby on rails Redmine:如何覆盖模型方法可见的条件,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想用我的插件覆盖model方法。我尝试创建一个新的模型修补程序,其方法应如下所示: require_dependency 'issue' module IssuePatch def self.included(base) # :nodoc: base.send(:extend, ClassMethods) base.send(:include, InstanceMethods) base.class_eval do
require_dependency 'issue'
module IssuePatch
def self.included(base) # :nodoc:
base.send(:extend, ClassMethods)
base.send(:include, InstanceMethods)
base.class_eval do
alias_method :visible_condition, :visible_condition_with_patch
end
end
module ClassMethods
end
module InstanceMethods
def visible_condition_with_patch(user, options={})
<Do Something>
end
end
end
Rails.configuration.to_prepare do
unless Issue.included_modules.include? IssuePatch
# Issue.extend(InstanceMethods)
Issue.send(:include, IssuePatch)
end
end
需要依赖关系“问题”
模块发布匹配
定义自包含(基本)#:nodoc:
base.send(:extend,ClassMethods)
base.send(:include,InstanceMethods)
基本类\u评估do
别名\u方法:可见\u条件,:带\u补丁的可见\u条件
结束
结束
模块类方法
结束
模块实例方法
def visible_condition_with_patch(用户,选项={})
结束
结束
结束
Rails.configuration.to_prepare do
除非问题。包括模块。包括?发行匹配
#问题.扩展(InstanceMethods)
发送(:include,IssuePatch)
结束
结束
试试这个
require_dependency 'issue'
module IssuePatch
def self.included(base)
base.class_eval do
def visible_condition(user, options={})
# do something
end
end
end
end
Issue.send(:include, IssuePatch) unless Issue.included_modules.include?(IssuePatch)
你试过在
InstanceMethods
模块中重新定义visible\u条件吗?是的,我这么做了,它不起作用。在base.class\u eval
块中重写visible\u条件怎么样?好的,看看我的答案。