【问题标题】:Can't call devise methods as soon as I upgraded to Mongoid 5升级到 Mongoid 5 后无法立即调用设计方法
【发布时间】:2015-10-03 14:03:48
【问题描述】:

下面是调用跟踪...

NoMethodError - undefined method `each_pair' for :primary_preferred:Symbol:
  bson (3.2.4) lib/bson/document.rb:82:in `initialize'
  mongo (2.1.1) lib/mongo/client.rb:192:in `read_preference'
  /Users/Sagar/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/forwardable.rb:183:in `read_preference'
  mongo (2.1.1) lib/mongo/collection.rb:104:in `read_preference'
  /Users/Sagar/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/forwardable.rb:183:in `read_preference'
  mongo (2.1.1) lib/mongo/collection/view/readable.rb:411:in `default_read'
  mongo (2.1.1) lib/mongo/collection/view/readable.rb:300:in `read'
  mongo (2.1.1) lib/mongo/collection/view/iterable.rb:40:in `block in each'
  mongo (2.1.1) lib/mongo/retryable.rb:46:in `read_with_retry'
  mongo (2.1.1) lib/mongo/collection/view/iterable.rb:39:in `each'
  mongoid (5.0.0) lib/mongoid/query_cache.rb:207:in `each'
  mongoid (5.0.0) lib/mongoid/contextual/mongo.rb:240:in `block in first'
  mongoid (5.0.0) lib/mongoid/contextual/mongo.rb:489:in `try_cache'
  mongoid (5.0.0) lib/mongoid/contextual/mongo.rb:239:in `first'
  mongoid (5.0.0) lib/mongoid/contextual.rb:20:in `first'
  orm_adapter (0.5.0) lib/orm_adapter/adapters/mongoid.rb:22:in `get'
  devise (3.4.1) lib/devise/models/authenticatable.rb:214:in `serialize_from_session'
  devise (3.4.1) lib/devise.rb:467:in `block (2 levels) in configure_warden!'
  warden (1.2.3) lib/warden/session_serializer.rb:34:in `fetch'
  warden (1.2.3) lib/warden/proxy.rb:212:in `user'
  warden (1.2.3) lib/warden/proxy.rb:318:in `_perform_authentication'
  warden (1.2.3) lib/warden/proxy.rb:104:in `authenticate'
  devise (3.4.1) lib/devise/controllers/helpers.rb:120:in `current_user'
  devise (3.4.1) lib/devise/controllers/helpers.rb:116:in `user_signed_in?'

在 Mongoid 4.2 上一切正常,一旦将 Mongoid 升级到 5.0.0,我就找到了这个!

你能帮我解决这个问题吗?不知道如何调试它。 提前谢谢你。

【问题讨论】:

    标签: ruby-on-rails devise mongoid


    【解决方案1】:

    Mongoid 5 似乎有一些不同的 mongoid.yml

    我有以下 mongoid.yml

    development:
      clients:
        default:
          database: db-name
          hosts:
            - localhost:27017
          options:
            read: :primary_preferred
    

    当我将值从:primary_preferred 更改为{mode: :primary_preferred} 时,如下所示,它成功了!

    development:
      clients:
        default:
          database: db-name
          hosts:
            - localhost:27017
          options:
            read:
              mode: :primary_preferred
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多