私のアプリでは、管理者だけが新しいユーザー レコードを作成できます。ユーザーには、パスワードを設定するアクティベーション リンクがメールで送信されます。
has_secure_passordメソッドを使いたいのですが(レールキャスト):
class User < ActiveRecord::Base
has_secure_password
...
end
うまく機能しますが、パスワード ダイジェストの存在を自動的に検証します...そのため、管理者がレコードを作成すると、検証は失敗します。追加した他の検証をスキップせずに、自動的に追加された password_digest 検証だけをスキップする方法はありますか?
ベストアンサー1
Rails 4.X バージョン以降では、has_secure_password
:validations オプションを使用できます。 に設定するとfalse
、検証は実行されません。
gemの3.Xバージョンはこのパラメータをサポートしていません。ただし、activemodel/lib/active_model/secure_password.rbをバックポートすることは可能です。最新の 4.0.XRC コードこれはこの議論を裏付けるものです。
そのため、コードは次のようになります。
class User < ActiveRecord::Base
has_secure_password :validations => false
...
end