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