Buat pengguna alat dari konsol Ruby

146

Adakah ide tentang cara membuat dan menyimpan objek Pengguna baru dengan merancang dari konsol ruby?

Ketika saya mencoba menyimpannya, saya selalu salah. Saya kira saya kehilangan sesuatu tetapi saya tidak dapat menemukan info terkait.

Martin
sumber
1
Bukan jawaban untuk pertanyaan Anda, dan Anda mungkin sudah tahu tentang Railcasts, tetapi saya menemukan video ini berguna ketika mempelajari tentang Rancangan : railscasts.com/episodes/209-introducing-devise , railscasts.com/episodes/210-customizing-devise . Mereka memiliki beberapa video yang sangat berguna tentang Rancangan di sana juga. Semoga berhasil.
2
Ya saya memperhatikan mereka berdua, tetapi mereka tidak mengatakan apa-apa tentang apa yang saya minta.
Martin

Jawaban:

197

Anda dapat menambahkan false ke metode simpan untuk melewati validasi jika Anda mau.

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

Kalau tidak, aku akan melakukan ini

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

Jika Anda memiliki confirmablemodul yang diaktifkan untuk dirancang, pastikan Anda menetapkan confirmed_atnilai untuk sesuatu seperti Time.nowsaat membuat.

jspooner
sumber
51
Sepertinya save (false) sudah usang, sekarang harus save (: validate => false)
Martin
9
ada begitu banyak keajaiban yang terjadi di sini .. Model Pengguna memperpanjang Rekaman Aktif. kenapa metode create ditimpa. Di mana kata sandi dienkripsi?
codeAnand
2
Apa yang sebenarnya dilakukan oleh panggilan alat
codeAnand
Sepertinya cara melakukan yang salah. Cara memvalidasi secara paksa ini (atau melewatkan validasi) tidak akan mengatur kata sandi yang dienkripsi, sehingga membuat catatan ini tidak berguna di aplikasi nyata.
VPaul
79

Anda harus dapat melakukan ini dengan menggunakan

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

jika ini kembali salah, Anda dapat menelepon

u.errors

untuk melihat apa yang salah.

Sam Ritchie
sumber
17
Jika Anda menggunakan: confirmable, jangan lupa juga atur: confirm_at atribut ke Time.now agar Anda dapat langsung masuk.
David Sulc
9
Sebagai jalan pintas, jika Anda menggunakan Confirmable, panggilu.confirm!
kapten
30

Ketika pada model Anda memiliki: opsi yang dapat dikonfirmasi ini berarti objek yang harus dikonfirmasikan oleh pengguna terlebih dahulu. Anda dapat melakukan dua cara untuk menghemat pengguna.

Sebuah. pertama adalah lewati konfirmasi:

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

b. atau gunakan konfirmasi! :

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

Jika Anda ingin menghindari mengirim email konfirmasi , pilihan terbaik adalah:

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

    u.confirm
    u.save

Jadi jika Anda menggunakan email palsu atau tidak memiliki koneksi internet, itu akan menghindari kesalahan.

Flavio Wuensche
sumber
Pembaruan: confirm!sekarang baru sajaconfirm
Shadow Radiance
2

Tidak ada jawaban di atas yang berfungsi untuk saya.

Inilah yang saya lakukan:

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

Perlu diingat bahwa kata sandi harus lebih besar dari 6 karakter.

Ezequiel Ramiro
sumber