Rubyコンソールからdeviseユーザーを作成する


146

rubyコンソールからの工夫で新しいユーザーオブジェクトを作成して保存する方法についてのアイデアはありますか?

保存しようとすると、常に間違った結果になります。何か不足しているようですが、関連情報を見つけることができません。


1
ないあなたの質問に答え、そしてあなたはおそらくすでにRailcastsについて知っているが、工夫について学ぶとき、私はこれらのビデオのが有用であることが判明:railscasts.com/episodes/209-introducing-deviserailscasts.com/episodes/210-customizing-devise。彼らはそこにもDeviseについての本当に役立つビデオをいくつか持っています。幸運を。

2
両方見ましたが、私が求めていることについては何も言われません。
Martin

回答:


197

必要に応じて、saveメソッドにfalseを追加して、検証をスキップできます。

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

そうでなければ私はこれをやります

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

あなたがいる場合はconfirmable、モジュールが工夫のために有効に、必ず設定している作るconfirmed_atようなものに価値をTime.now作成中。


51
save(false)は廃止されたようですが、今はsave(:validate => false)である必要があります
Martin

9
ここで起こっている魔法はたくさんあります。UserモデルはActive Recordを拡張します。createメソッドがオーバーライドされる理由 暗号化されているパスワードはどこにありますか?
codeAnand

2
工夫呼び出しが実際に何をするのか
codeAnand

間違ったやり方のようです。このように強制的に検証する(または検証をスキップする)方法では、encrypted_pa​​sswordが設定されないため、実際のアプリではこのレコードは役に立たなくなります。
VPaul 2018年

79

あなたはこれを使用してこれを行うことができるはずです

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

これがfalseを返す場合、次を呼び出すことができます

u.errors

何が間違っているのかを確認します。


17
:confirmableを使用する場合は、:confirmed_at属性もTime.nowに設定して、すぐにログインできるようにしてください。
David Sulc、2010年

9
ショートカットとして、を使用している場合はConfirmable、電話u.confirm!
captainpete 2013年

30

モデルに:confirmableオプションがある場合、これはオブジェクトユーザーが最初に確認する必要があることを意味します。ユーザーを保存するには2つの方法があります。

a。最初は確認のスキップです:

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

b。または確認を使用してください!:

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

6

確認メールの送信避けたい場合は、次の方法が最適です。

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

    u.confirm
    u.save

したがって、偽のメールを使用している場合やインターネットに接続していない場合でも、エラーは回避されます。


更新:confirm!ただ今confirm
Shadow Radiance

2

上記の答えはどれもうまくいきませんでした。

これは私がやったことです:

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

パスワードは6文字より長くする必要があることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.