Ruby konsolundan tasarlanmış bir kullanıcı oluşturun


147

Ruby konsolundan yeni bir Kullanıcı nesnesinin nasıl oluşturulacağı ve kaydedileceği hakkında bir fikriniz var mı?

Onu kurtarmaya çalıştığımda her zaman yanlış oluyorum. Sanırım bir şeyi kaçırıyorum ama ilgili herhangi bir bilgi bulamıyorum.


1
Sorunuzun cevabı değil ve muhtemelen Railcast'leri zaten biliyorsunuzdur, ancak Devise hakkında bilgi alırken bu videoları yararlı buldum: railscasts.com/episodes/209-introducing-devise , railscasts.com/episodes/210-customizing-devise . Orada da Devise hakkında gerçekten yararlı birkaç video var. İyi şanslar.

2
Evet, ikisini de izledim, ama sorduğum şey hakkında hiçbir şey söylemiyorlar.
Martin

Yanıtlar:


197

İsterseniz doğrulamaları atlamak için kaydetme yöntemine false ekleyebilirsiniz.

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

Aksi takdirde bunu yapardım

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

Eğer varsa confirmablemodül vasiyetle için etkinleştirilmiş, emin ayarlarken yapmak confirmed_atgibi bir şey değer Time.nowyaratırken.


51
Görünüşe göre kaydetme (yanlış) oluşturulmamış, şimdi kaydedilmeli (: validate => false)
Martin

9
burada gerçekleşen çok fazla sihir var .. Kullanıcı modeli Aktif Kaydı genişletir. nasıl olur da oluşturma yöntemi geçersiz kılınır. Parola nerede şifreleniyor?
codeAnand


Yanlış bir yol gibi görünüyor. Bu şekilde zorla doğrulama (veya doğrulamayı atlama) şifrelenmiş_parola ayarlamaz ve bu nedenle bu kaydı gerçek uygulamada işe yaramaz hale getirir.
VPaul

79

Bunu kullanarak yapabilmelisin

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

bu yanlış döndürürse arayabilirsin

u.errors

neyin yanlış gittiğini görmek için.


17
: Confirmable kullanıyorsanız, hemen oturum açabilmeniz için ayrıca: confirm_at özniteliğini Time.now olarak ayarlamayı unutmayın.
David Sulc

9
Kısayol olarak, kullanıyorsanız Confirmablearayınu.confirm!
captainpete

30

Modelinizde olduğunda: onaylanabilir seçenek bu, kullanıcının önce onaylaması gerektiği anlamına gelir. Kullanıcıyı kurtarmak için iki yol yapabilirsiniz.

a. ilki atlama onayı:

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

b. veya onayla! :

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

6

Onay e-postaları göndermekten kaçınmak istiyorsanız , en iyi seçenek şudur:

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

    u.confirm
    u.save

Dolayısıyla, sahte bir e-posta kullanıyorsanız veya internet bağlantınız yoksa, bu hataları önler.


Güncelleme: confirm!şimdi sadececonfirm
Shadow Radiance

2

Yukarıdaki cevapların hiçbiri benim için işe yaramadı.

Ben de öyle yaptım:

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

Şifrenin 6 karakterden büyük olması gerektiğini unutmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.