我想将Spree::User
方法添加到Spree::User
类。
module Spree
class User < Spree::Base
include Spree::UserMethods
def vendor?
self.role_users.any? { |ru| ru.role.name == 'vendor' }
end
end
end
在我的Rails应用程序使用的solidus gem中定义。我不想触摸这段代码,而是打开课程并在主Rails应用程序中将我的方法附加到它。
例如:RAILS_ROOT / app / models / spree / user.rb
admin?
然而,这不包括在我创建补丁之前存在的B11
等方法。
有没有办法可以扩展现有类而无需手动复制所有方法?
答案 0 :(得分:3)
在config/initializers
目录下创建一个文件:
# config/initializers/spree_user.rb
Spree::User.class_eval do
def vendor?
self.role_users.any? { |ru| ru.role.name == 'vendor' }
end
end
它只会将您的单个方法添加到现有类中。