2014-04-15 4 views
5

मैं रेल 4.1.0 ऐप के साथ मोंगोइड का उपयोग करने की कोशिश कर रहा हूं और moongodb 2.6.0 (mongodb के पिछले संस्करणों पर 10068 के रूप में) पर त्रुटि 17287 प्राप्त कर रहा हूं।रेलोड के साथ मोंगोब त्रुटि कोड 10068 या 17287 4.1 और

The operation: #<Moped::Protocol::Query @length=127 @request_id=5 @response_to=0 @op_code=2004 @flags=[] @full_collection_name="educandose_development.users" @skip=0 @limit=-1 @selector={"$query"=>{"_id"=>{"$oid"=>BSON::ObjectId('534d6f4f6372618443000000')}}, "$orderby"=>{:_id=>1}} @fields=nil> failed with error 17287: "Can't canonicalize query: BadValue unknown operator: $oid" See https://github.com/mongodb/mongo/blob/master/docs/errors.md for details about this error. 

क्या गलत हो सकता है की कोई भी विचार: त्रुटि संदेश यह?

उत्तर

13

थोड़ी देर के लिए, मुझे एहसास हुआ कि रेल पर नए जेसन कुकीज़ सीरिएलाइज़र 4.1 तैयार संसाधनों पर मोपेड प्रश्नों को तोड़ देता है।

YourApp::Application.config.session_store :cookie_store, key: '_yourapp_session' 

या:

कि ठीक करने के लिए,

Rails.application.config.action_dispatch.cookies_serializer = :json 

आप पुराने sessions_store.rb फाइल करने के लिए इसी तरह की सामग्री के साथ वापस पाने के लिए चाहते हो सकता है cookies_serializer.rb प्रारंभकर्ता पर निम्न पंक्ति को हटा दें देवता की मास्टर शाखा का प्रयास करें।

यहाँ एक नज़र डालें: https://github.com/plataformatec/devise/issues/2949#issuecomment-40520236 और यहाँ: https://github.com/plataformatec/devise/pull/2882

+5

यह तो ले जाता है: ActionView :: खाका :: त्रुटि (असंगत मार्शल फ़ाइल स्वरूप (कर सकते हैं ' टी पढ़ा नहीं जा सकता) \t प्रारूप संस्करण 4.8 आवश्यक; 123.34 दिया गया) यदि आपने कुकीज को साफ़ नहीं किया है। अपनी कुकीज़ साफ़ करें और यह दूर हो जाता है। –

10

अस्थायी रूप से, जब तक मोपेड/सत्र/json स्वरूपण तय हो गई है, मैं उपयोग कर रहा हूँ:

# app/models/concerns/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 

और वसीयत मॉडल में:

class User 

    devise :database_authenticatable, ... 

    # NOTE: Has to be after devise 
    include ZeroOidFix 

    ... 
end 

आशा है कि यह उत्तर अप्रचलित हो जाएगा। json

  • कुकीज़ हटाएँ: नीचे लाइन से cookies_serializer.rb

    Rails.application.config.action_dispatch.cookies_serializer =

  • +0

    यह फिक्स मेरे लिए काम किया, धन्यवाद। हालांकि, मुझे समझ में नहीं आता कि यह त्रुटि क्यों हो रही है और यह कैसे काम करता है। क्या आप कृपया बता सकते हैं कि क्या हो रहा है? – yeyo

    +0

    @ किरा बीएसओएन ऑब्जेक्टआईड सीरियलाइजेशन इसे '{" $ oid ":" हेक्सस्ट्रिंग "} ऑब्जेक्ट करने के लिए सादा हेक्स स्ट्रिंग के रूप में संग्रहीत करने से बदल गया है, इसलिए यह मोंगोडीबी के विस्तारित जेएसओएन स्वरूपण सम्मेलन (एक लाइब्रेरी में बदला गया है लेकिन दूसरे नहीं) के साथ अधिक गठबंधन है। –

    +0

    मेरे लिए भी काम करता है +1 –

    0
    1. टिप्पणी बाहर।

    2. सर्वर पुनरारंभ करें।

    पर मेरे लिए काम किया "रेल 4.1.4, वसीयत 3.2.4, mongoid 4.0.0"

    संबंधित मुद्दे