Crea un utente ideato dalla console di Ruby


146

Qualche idea su come creare e salvare un nuovo oggetto utente con idea dalla console ruby?

Quando ho provato a salvarlo, sto diventando sempre falso. Immagino che mi manchi qualcosa ma non riesco a trovare alcuna informazione correlata.


1
Non è una risposta alla tua domanda, e probabilmente conosci già i Railcast, ma ho trovato questi video utili quando ho imparato qualcosa su Devise : railscasts.com/episodes/209-introducing-devise , railscasts.com/episodes/210-customizing-devise . Ci sono anche alcuni video molto utili su Devise. In bocca al lupo.

2
Sì, li ho visti entrambi, ma non dicono nulla di quello che sto chiedendo.
Martin,

Risposte:


197

È possibile aggiungere false al metodo save per saltare le convalide, se lo si desidera.

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

Altrimenti lo farei

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

Se hai il confirmablemodulo abilitato per la progettazione, assicurati di impostare il confirmed_atvalore su qualcosa come Time.nowdurante la creazione.


51
Sembra che save (false) sia stato creato, ora dovrebbe essere save (: validate => false)
Martin

9
c'è così tanta magia che sta accadendo qui ... Il modello utente estende il Record attivo. come mai viene ignorato il metodo di creazione. Dove viene crittografata la password?
codeAndand

2
Cosa fa effettivamente il progetto escogitato
codeAnand

Sembra un modo sbagliato di fare. Questo modo di convalidare forzatamente (o saltare la convalida) non imposterà la password crittografata, rendendo quindi questo record inutile nella vera app.
VPaul

79

Dovresti essere in grado di farlo usando

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

se questo restituisce falso, puoi chiamare

u.errors

per vedere cosa è andato storto.


17
Se usi: confermabile, non dimenticare di impostare anche l'attributo: confermato_at su Time.now in modo da poter accedere immediatamente.
David Sulc,

9
Come scorciatoia, se stai usando Confirmable, chiamau.confirm!
captainpete il

30

Quando sul tuo modello ha: opzione confermabile significa che l'utente oggetto deve essere confermato per primo. Puoi fare due modi per salvare l'utente.

un. il primo è saltare la conferma:

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

b. o usa conferma! :

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

6

Se si desidera evitare di inviare e-mail di conferma , la scelta migliore è:

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

    u.confirm
    u.save

Quindi, se stai usando una e-mail falsa o non hai una connessione Internet, questo eviterà errori.


Aggiornamento: confirm!ora è soloconfirm
Shadow Radiance

2

Nessuna delle risposte sopra ha funzionato per me.

Questo è quello che ho fatto:

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

Tieni presente che la password deve contenere più di 6 caratteri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.