我知道我可以为模型添加新方法,但我似乎无法覆盖现有方法。这就是我所拥有的
在我的User.rb
中include ExtraMethods
def is_invisible?
true unless self.active?
end
在我的模块中
module ExtraMethods
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def user_extra_methods
include ExtraMethods::InstanceMethods
end
end
module InstanceMethods
def is_invisible?
true unless self.active? || self.admin?
end
end
end
ActiveRecord::Base.send(:include, ExtraMethods)
User.send(:user_extra_methods)
我想要发生的是插件中的方法覆盖模型中的方法。任何想法或参考都会很棒,似乎无法找到一个很好的参考。
谢谢!
Ĵ
答案 0 :(得分:1)
宣布班级成员的顺序非常重要。
您是否正在执行插件的include
self.active?方法被声明...模型声明将始终优先,因为它是稍后声明的。
你必须诉诸这样的事情:
http://weblog.rubyonrails.org/2006/4/26/new-in-rails-module-alias_method_chain