Ruby on rails 打开Spree::User类并添加函数而不丢失现有函数
我想将Ruby on rails 打开Spree::User类并添加函数而不丢失现有函数,ruby-on-rails,ruby,ruby-on-rails-4,metaprogramming,spree,Ruby On Rails,Ruby,Ruby On Rails 4,Metaprogramming,Spree,我想将vendor?方法添加到Spree::User类中 Spree::User在我的Rails应用程序使用的solidus gem中定义。我不想接触这段代码,而是在MainRails应用程序中打开类并将我的方法附加到它 例如:RAILS\u ROOT/app/models/spree/user.rb module Spree class User < Spree::Base include Spree::UserMethods def vendor?
vendor?
方法添加到Spree::User
类中
Spree::User
在我的Rails应用程序使用的solidus gem中定义。我不想接触这段代码,而是在MainRails应用程序中打开类并将我的方法附加到它
例如:RAILS\u ROOT/app/models/spree/user.rb
module Spree
class User < Spree::Base
include Spree::UserMethods
def vendor?
self.role_users.any? { |ru| ru.role.name == 'vendor' }
end
end
end
模块狂欢
类用户
但是,这不包括在我创建修补程序之前出现的admin?
等方法
有没有一种方法可以扩展现有类而不用手动复制它的所有方法?在
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
它只会将您的单个方法添加到现有类中。Nice,就是这样!:-D