2016-01-22 74 views
1

我想向Spree :: User添加vendor?函數。 因此,我創建應用程序/模型/大禮包/ user.rb如何從使用固體寶石的Rails應用程序擴展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 

這工作如果我開始軌控制檯和測試: u = Spree::User.last; u.vendor? # => false

但是當我開始軌服務器和訪問的網頁,我得到這個錯誤: NoMethodError在施普雷::管理:: OrdersController#指數 未定義的方法`serialize_from_session」爲#

堆棧跟蹤

activerecord (4.2.5) lib/active_record/dynamic_matchers.rb:26:in `method_missing' 
devise (3.5.4) lib/devise.rb:465:in `block (2 levels) in configure_warden!' 
warden (1.2.4) lib/warden/session_serializer.rb:34:in `fetch' 
warden (1.2.4) lib/warden/proxy.rb:212:in `user' 
warden (1.2.4) lib/warden/proxy.rb:322:in `_perform_authentication' 
warden (1.2.4) lib/warden/proxy.rb:104:in `authenticate' 
devise (3.5.4) lib/devise/controllers/helpers.rb:124:in `current_spree_user' 
solidus_auth_devise (1.3.0) lib/spree/authentication_helpers.rb:11:in `spree_current_user' 
solidus/core/lib/spree/core/controller_helpers/auth.rb:67:in `try_spree_current_user' 
solidus/core/lib/spree/core/controller_helpers/auth.rb:31:in `current_ability' 
cancancan (1.13.1) lib/cancan/controller_additions.rb:338:in `authorize!' 
solidus/backend/app/controllers/spree/admin/base_controller.rb:22:in `authorize_admin' 

任何想法我應該怎麼做才能解決這個錯誤?根據堆棧跟蹤,它看起來像我在某處丟失了一個方法。

乾杯, 馬丁

回答

0

答案是打開施普雷:: User類,並添加方法你錯過:

如:

配置/初始化/ spree_user.rb

Spree::User.class_eval do 

    def vendor? 
     self.role_users.any? { |ru| ru.role.name == 'vendor' } 
    end 

end 
相關問題