Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Redmine:如何覆盖模型方法可见的条件_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Redmine:如何覆盖模型方法可见的条件

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

我想用我的插件覆盖model方法。我尝试创建一个新的模型修补程序,其方法应如下所示:

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条件怎么样?好的,看看我的答案。