Crear un usuario de devise desde Ruby console


¿Alguna idea sobre cómo crear y guardar un nuevo objeto de usuario con devise desde la consola ruby?

Cuando traté de guardarlo, siempre me estoy poniendo falso. Supongo que me estoy perdiendo algo, pero no puedo encontrar ninguna información relacionada.

Author: Arslan Ali, 2010-11-30

5 answers

Puede agregar false al método save para omitir las validaciones si lo desea.

User.new({:email => "[email protected]", :roles => ["admin"], :password => "111111", :password_confirmation => "111111" }).save(false)

De lo contrario haría esto

User.create!({:email => "[email protected]", :roles => ["admin"], :password => "111111", :password_confirmation => "111111" })

Si tiene el módulo confirmable habilitado para devise, asegúrese de que está configurando el valor confirmed_at a algo como Time.now mientras crea.

 182
Author: jspooner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-05 06:27:02

Usted debe ser capaz de hacer esto usando

u = User.new(:email => "[email protected]", :password => 'password', :password_confirmation => 'password')
u.save

Si esto devuelve false, puede llamar a

u.errors

Para ver qué ha salido mal.

 71
Author: Sam Ritchie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-30 18:09:12

Cuando en su modelo tiene la opción :confirmable, esto significa que el usuario del objeto debe confirmar primero. Puede hacer dos formas de guardar el usuario.

A. Primero es la confirmación de salto:

newuser = User.new({email: '[email protected]', password: 'password', password_confirmation: 'password'})
newuser.skip_confirmation!
newuser.save

B. o usar confirmar! :

newuser = User.new({email: '[email protected]', password: 'password', password_confirmation: 'password'})
newuser.confirm!
newuser.save
 25
Author: akbarbin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-24 02:32:36

Si quieres evitar enviar correos electrónicos de confirmación , la mejor opción es:

    u = User.new({
      email: '[email protected]',
      password: '12feijaocomarroz',
      password_confirmation: '12feijaocomarroz'
    })

    u.confirm!
    u.save

Así que si estás usando un correo electrónico falso o no tienes conexión a Internet, eso evitará errores.

 6
Author: Flavio Wuensche,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-22 16:14:30

Ninguna de las respuestas anteriores funcionó para mí.

Esto es lo que hice:

User.create(email: "[email protected]", password: "asdasd", password_confirmation: "asdasd")

Tenga en cuenta que la contraseña debe tener más de 6 caracteres.

 1
Author: Ezequiel Ramiro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-28 15:28:39