【问题标题】:Howto extend the Spree::User class from the Rails app that uses the solidus gem如何从使用solidus gem 的Rails 应用程序扩展Spree::User 类
【发布时间】:2016-01-22 20:29:14
【问题描述】:

我想向 Spree::User 添加一个vendor? 函数。 所以我创建了 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

如果我启动 rails 控制台并测试,这将有效: u = Spree::User.last; u.vendor? # =&gt; false

但是当我启动 rails server 并访问一个页面时,我得到了这个错误: Spree::Admin::OrdersController#index 中的 NoMethodError #

的未定义方法“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'

知道我应该如何解决这个错误吗?根据堆栈跟踪,我好像在某处遗漏了一个方法。

干杯, 马丁

【问题讨论】:

    标签: ruby-on-rails ruby spree


    【解决方案1】:

    答案是打开 Spree::User 类并添加你缺少的方法:

    例如:

    config/initializers/spree_user.rb

     Spree::User.class_eval do
    
        def vendor?
          self.role_users.any? { |ru| ru.role.name == 'vendor' }
        end
    
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 2018-02-07
      相关资源
      最近更新 更多