2011-01-08 11 views
8

Estoy tratando de precargar todas las cuentas de diseño por adelantado usando rake db: seed. Los datos para todos los demás modelos parecen estar insertados en la base de datos pero, por alguna razón, NO se crean filas para el modelo Persona que utiliza el dispositivo. El registro desde la interfaz web funciona bien, pero quiero evitar crear cuentas manualmente, esa es la razón por la que estoy usando rake db: seed. Copié encrypted_password, password_salt de una cuenta creada a través de la interfaz web. Por favor, hágame saber cómo solucionar esto? Muchas gracias ..No se puede crear una cuenta de cálculo utilizando rake db: seed para 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

Por cierto, este método de siembra de los usuarios no es muy eficiente, ya que para cada usuario Idear comprueba si hay un usuario con ese correo electrónico ya (una consulta separada) y los problemas una consulta de inserción por separado, esto realmente funciona muy lento para mí. Actualmente estoy buscando mejores soluciones. Necesito tener alrededor de 100,000 usos para probar ... –

Respuesta

24

He hecho esto usando Devise en el pasado. No intenté configurar la contraseña cifrada y la sal de esa manera. Acabo de establecer la contraseña y la confirmación algo como esto (no tengo mi proyecto a mano):

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

Pruébalo.

4

Lo más probable es que el método "crear" falle silenciosamente debido a la validación del modelo y, por lo tanto, devuelve falso. Habrías sembrado los errores si hubieses usado "crear!" método en su lugar (con el signo de exclamación): este método genera la excepción si falla la validación.

El motivo probable de la falla de validación en su caso es que (por defecto para Devise) la longitud mínima de la contraseña es de 6 caracteres y usted no estaba proporcionando contraseña.

0

Si no desea que los duplicados durante la ejecución rake db: semillas varias veces:

User.create(
    email: email, 
    password: password, 
    password_confirmation: password 
) unless User.where(email: email).exists? 
Cuestiones relacionadas