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.