2011-01-08 9 views
8

मैं रेक डीबी: बीज का उपयोग करके सभी देवताओं के खातों को पहले से लोड करने की कोशिश कर रहा हूं। अन्य सभी मॉडलों के लिए डेटा डेटाबेस में डाला जाता प्रतीत होता है लेकिन किसी कारण से व्यक्ति मॉडल के लिए कोई पंक्तियां नहीं बनाई जाती हैं जो तैयार करती हैं। वेब इंटरफ़ेस से पंजीकरण ठीक काम करता है, लेकिन मैं मैन्युअल रूप से खातों को बनाने से बचना चाहता हूं, यही कारण है कि मैं रेक डीबी: बीज का उपयोग कर रहा हूं। मैंने वेब इंटरफेस के माध्यम से बनाए गए खाते से एन्क्रिप्टेड_पासवर्ड, पासवर्ड_साल्ट कॉपी किया। कृपया मुझे बताएं कि इस के आसपास कैसे जाना है? बहुत धन्यवाद ..रेक डीबी का उपयोग करके डेविस खाता नहीं बना सकता: रेल 3.0 के लिए बीज

people = Person.create(
         :email => '[email protected]', 
         :encrypted_password => '$2a$10$SyacAOhJQtVeTcTPYm.ROuFbhGMylfj4fLrK3NHyeRwfEokKp2NVW', 
         :password_salt => '$2a$10$SyacAOhJQtVeTcTPYm.ROu', 
         :first_name => "nnn", 
         :last_name => "yyy" 
         ) 


in routes.rb i have. 

    devise_for :people 
+0

Btw, बोने उपयोगकर्ताओं की इस पद्धति नहीं बहुत ही कुशल है, क्योंकि प्रत्येक उपयोगकर्ता के लिए जाँच करता है वसीयत अगर वहाँ के साथ एक उपयोगकर्ता है वह ईमेल पहले से ही (एक अलग क्वेरी) और मुद्दों को एक अलग सम्मिलित क्वेरी - यह मेरे लिए वास्तव में धीमा काम करता है। मैं वर्तमान में बेहतर समाधान की तलाश में हूं। मुझे परीक्षण के लिए बीजित लगभग 100,000 उपयोग करने की आवश्यकता है ... –

उत्तर

24

मैंने अतीत में डेविस का उपयोग करके ऐसा किया है। मैंने एन्क्रिप्टेड पासवर्ड और नमक को इस तरह से सेट करने की कोशिश नहीं की। मैंने बस इस तरह का पासवर्ड और पुष्टिकरण सेट किया है (मेरे पास मेरी परियोजना आसान नहीं है):

Person.create(:email => '[email protected]', :password => 'foobar', :password_confirmation => 'foobar', :first_name => 'nn', :last_name => 'yy') 

इसे आज़माएं।

4

मॉडल सत्यापन के कारण "निर्माण" विधि चुपचाप विफल हो जाती है और इसलिए झूठी वापसी होती है। यदि आप "बनाओ" इस्तेमाल करते हैं तो आप त्रुटियों को बीज देंगे इसके बजाय विधि (विस्मयादिबोधक) - सत्यापन विधि विफल होने पर यह विधि अपवाद उठाती है।

आपके मामले में सत्यापन विफलता का संभावित कारण यह है कि (डिवाइसेज के लिए डिफ़ॉल्ट रूप से) न्यूनतम पासवर्ड लंबाई 6 वर्ण है और आप बिल्कुल पासवर्ड नहीं दे रहे थे।

0

आप डुप्लिकेट रेक db चलाते समय नहीं करना चाहते हैं: बीज कई बार:

User.create(
    email: email, 
    password: password, 
    password_confirmation: password 
) unless User.where(email: email).exists? 
संबंधित मुद्दे