一旦我升级到Mongoid 5,就无法调用设计方法

时间:2015-10-03 14:03:49

标签: ruby-on-rails devise mongoid

以下是通话追踪......

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我就找到了这个!

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

1 个答案:

答案 0 :(得分:1)

Mongoid 5似乎有些不同mongoid.yml

我有以下mongoid.yml

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

当我将read:的值从:primary_preferred更改为{mode: :primary_preferred}时,如下所示,它就是诀窍!

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