2015-04-10 2 views
0

Так что я устал от этого, так как по какой-то причине эта ошибка, похоже, существует в течение стольких месяцев, что она, очевидно, не должна беспокоить многих людей. Который я не понимаю, почему, поскольку я никогда не могу создать базовую систему аутентификации пользователей.Невозможно создать аутентификацию в Mongoid

Ошибки я получаю:

@selector={"_id"=>{"$oid"=>BSON::ObjectId('5527d409536962695c000000')}} 
Can't canonicalize query: BadValue unknown operator: $oid 

это происходит в результате меня пытается создать вспомогательный метод под названием current_user. Что я делаю со следующим кодом:

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

как исправить эту безумно раздражающую ошибку?

ответ

1

Это вызвано представлением JSON объекта ObjectId. Вот решение, которое моя команда и я используем.

Добавьте это к заботам/zero_oid_fix.rb

module ZeroOidFix 
    extend ActiveSupport::Concern 

    module ClassMethods 
    def serialize_from_session(key, salt) 
     record = to_adapter.get((key[0]["$oid"] rescue nil)) 
     record if record && record.authenticatable_salt == salt 
    end 
    end 
end 

Затем в User.rb добавить

include ZeroOidFix 

Убедитесь, что линия находится ниже DEViSE линии (если вы используете его).

Смежные вопросы