Crear un usuario ingenioso desde la consola de Ruby


146

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

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


1
No es una respuesta a su pregunta, y probablemente ya sepa sobre Railcasts, pero encontré estos videos útiles cuando aprendí sobre Devise: railscasts.com/episodes/209-introducing-devise , railscasts.com/episodes/210-customizing-devise . También tienen algunos videos más útiles sobre Devise. Buena suerte.

2
Sí, los vi a ambos, pero no dicen nada sobre lo que estoy preguntando.
Martin

Respuestas:


197

Puede agregar falso al método de guardar para omitir las validaciones si lo desea.

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

De lo contrario, haría esto

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

Si tiene un confirmablemódulo habilitado para el diseño, asegúrese de establecer el confirmed_atvalor en algo así como Time.nowal crear.


51
Parece que save (false) es depcreated, ahora debería ser save (: validate => false)
Martin

9
Hay tanta magia sucediendo aquí. El modelo de usuario extiende Active Record. ¿Cómo es que se anula el método de creación? ¿Dónde se cifra la contraseña?
codeAnand

2
¿Qué hace realmente la llamada de
dispositivo

Parece una forma incorrecta de hacerlo. Esta forma de validar por la fuerza (u omitir la validación) no establecerá la contraseña cifrada, por lo que este registro será inútil en la aplicación real.
VPaul

79

Deberías poder hacer esto usando

u = User.new(:email => "user@name.com", :password => 'password', :password_confirmation => 'password')
u.save

si esto devuelve falso, puede llamar

u.errors

para ver qué salió mal.


17
Si utiliza: confirmable, no olvide establecer también: atributo confirmado_at en Time.now para que pueda iniciar sesión de inmediato.
David Sulc

9
Como atajo, si está usando Confirmable, llame au.confirm!
captainpete el

30

Cuando en su modelo tiene: opción confirmable esto significa que el usuario del objeto debe ser confirmado primero. Puede hacer dos formas de salvar al usuario.

a. primero es omitir la confirmación:

newuser = User.new({email: 'superadmin1@testing.com', password: 'password', password_confirmation: 'password'})
newuser.skip_confirmation!
newuser.save

si. o use confirmar! :

newuser = User.new({email: 'superadmin2@testing.com', password: 'password', password_confirmation: 'password'})
newuser.confirm!
newuser.save

6

Si desea evitar el envío de correos electrónicos de confirmación , la mejor opción es:

    u = User.new({
      email: 'demo@greenant.com.br',
      password: '12feijaocomarroz',
      password_confirmation: '12feijaocomarroz'
    })

    u.confirm
    u.save

Entonces, si está utilizando un correo electrónico falso o no tiene conexión a Internet, eso evitará errores.


Actualización: confirm!ahora es soloconfirm
Shadow Radiance

2

Ninguna de las respuestas anteriores funcionó para mí.

Esto es lo que hice:

User.create(email: "a@a.com", password: "asdasd", password_confirmation: "asdasd")

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.