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.


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 => "guy@gmail.com", :roles => ["admin"], :password => "111111", :password_confirmation => "111111" }).save(false)

Kalau tidak, aku akan melakukan ini

User.create!({:email => "guy@gmail.com", :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.


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 => "user@name.com", :password => 'password', :password_confirmation => 'password')
u.save

jika ini kembali salah, Anda dapat menelepon

u.errors

untuk melihat apa yang salah.


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: 'superadmin1@testing.com', password: 'password', password_confirmation: 'password'})
newuser.skip_confirmation!
newuser.save

b. atau gunakan konfirmasi! :

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

6

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

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

    u.confirm
    u.save

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


Pembaruan: confirm!sekarang baru sajaconfirm
Shadow Radiance

2

Tidak ada jawaban di atas yang berfungsi untuk saya.

Inilah yang saya lakukan:

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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.