2015-02-16 3 views
0

Продвигаясь, чтобы попытаться найти решение этой проблемы, главное, что люди испытывают эту ошибку при настройке Mongoid с помощью Devise.Мопед :: Ошибки :: QueryFailure in Pages # index

Однако я не использую устройство, я использую omniauth.

, когда я добавляю это к моему application_controller ошибка появляется (PS: Я не уверен, что этот код даже самое лучшее решение для Rails 4, я отслеживаю «Simple» OmniAuth учебник Railscast.):

частный

def current_user 
    @current_user ||= User.find(session[:user_id]) if session[:user_id] 
end 

helper_method :current_user 

полная ошибка гласит:

The operation: #<Moped::Protocol::Query 
    @length=82 
    @request_id=6 
    @response_to=0 
    @op_code=2004 
    @flags=[] 
    @full_collection_name="mw_development.users" 
    @skip=0 
    @limit=0 
    @selector={"_id"=>{"$oid"=>BSON::ObjectId('54b13b4e536562107c000000')}} 
    @fields=nil> 
failed with error 17287: "Can't canonicalize query: BadValue unknown operator: $oid" 

кто-нибудь знает, что происходит? Я знаю, что одно исправление заключается в том, чтобы комментировать cookie_serializer.rb, но я не люблю комментировать вещи, которые я не знаю, что делать, и я уверен, что есть лучшее решение.

ответ

1

У меня была та же проблема.

Понимаете, вы не можете использовать BSON :: ObjectId именно так. Не знаете, почему это так. (Скажем, это волшебство.)

Попробуйте преобразовать его в строку вместо.

User.find(session[:user_id].to_s) 

Или аналогичным образом. Надеюсь, это было полезно.