web-dev-qa-db-ja.com

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

Rubyコンソールからdeviseを使用して新しいUserオブジェクトを作成および保存する方法についてのアイデアはありますか?

保存しようとすると、常にfalseになります。何かが足りないと思いますが、関連する情報を見つけることができません。

140
Martin

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

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

そうでなければ私はこれをするだろう

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

confirmableモジュールを有効にしている場合は、作成中にconfirmed_at値をTime.nowなどの値に設定していることを確認してください。

185
jspooner

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

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

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

u.errors

何が間違っているのかを見るために。

74
Sam Ritchie

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

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

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

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

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

確認メールの送信を避けるにしたい場合、最良の選択は次のとおりです。

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

    u.confirm
    u.save

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

6
Flavio Wuensche

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

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

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

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

2
Ezequiel Ramiro