2011-01-08 15 views
8

Sto tentando di precaricare tutti gli account di sviluppo in anticipo utilizzando rake db: seed. I dati per tutti gli altri modelli sembrano essere inseriti nel database, ma per qualche motivo NON vengono create righe per il modello Persona che usa ideato. La registrazione dall'interfaccia web funziona bene, ma voglio evitare di creare account manualmente, questo è il motivo per cui sto usando rake db: seed. Ho copiato encrypted_password, password_salt da un account creato tramite interfaccia web. Per favore fatemi sapere come aggirare questo? Molte grazie ..Impossibile creare l'account Devise utilizzando rake db: seed per Rails 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, questo metodo di utenti semina non è molto efficiente, perché per ogni utente Definire controlla se c'è un utente con quel messaggio di posta elettronica già (una query separata) e il problema una query di inserimento separata - questo funziona veramente lento per me. Attualmente sto cercando soluzioni migliori. Devo avere circa 100.000 usi seminati per testare ... –

risposta

24

Ho fatto questo utilizzando Devise in passato. Non ho provato a impostare la password crittografata e sale in questo modo. Ho appena impostato la password e conferma qualcosa di simile (non ho il mio progetto a portata di mano):

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

Provalo.

4

Molto probabilmente il metodo "crea" non funziona correttamente a causa della convalida del modello e pertanto restituisce false. Avresti seminato gli errori se avessi usato "crea!" metodo invece (con punto esclamativo) - questo metodo solleva l'eccezione se la convalida non riesce.

Il motivo probabile per l'errore di convalida nel tuo caso è che (per impostazione predefinita per Devise) la lunghezza minima della password è di 6 caratteri e non hai fornito affatto la password.

0

Se non si desidera che i duplicati durante l'esecuzione rake db: seme più volte:

User.create(
    email: email, 
    password: password, 
    password_confirmation: password 
) unless User.where(email: email).exists? 
Problemi correlati