2012-04-02 15 views

答えて

5

変更パスワードバリデーションはでのみ有効です。作成アクション。 password_confirmationフィールドと認証がトリガされません:あなたは、すべてのパスワードの確認をしたくない場合は

validates :password, presence: true, 
        length: { minimum: 6 }, 
        on: :create 
+1

これを行うと、ユーザーがパスワードを変更できるようにするメカニズム(パスワードの忘れなど)がある場合、パスワードが短すぎる新しいパスワードを設定できるようになります。その理由は、パスワードの更新時に長さの検証が開始されないためです。 –

0

has_secure_passwordは実際にはActiveModelの一部であり、それ自体は宝石ではありません。 bcrypt gemはpassword_digest属性をハッシュするために使用されます。

has_secure_password方法は、実際に(source here)が非常に短く、確認するためにパスワードを要求する1行が含まれますので、

# File activemodel/lib/active_model/secure_password.rb, line 34 
    validates_confirmation_of :password 
    validates_presence_of  :password_digest 

を、あなたのconfig /初期化子に修正版を作成することにより、has_secure_passwordメソッドをオーバーライドフォルダが機能するはずです。 「validates_confirmation_of」行をコメントアウトすると、パスワード確認がオフになります。また、あなたの質問でやろうとしたようにオプションをハッシュするために、メソッドを書き直すこともできます。

+0

has_secure_passwordメソッドをオーバーライドする手順を教えてください。 – medBo

1

あなたは、単純に設定することはできません。

よりここに調べる:https://github.com/rails/rails/pull/5131

Railsの4編集:このparamsは強いが導入されて以来、それ以上は関係ありません。サインアップフォームから確認フィールドを削除するだけで、パラメータは渡されません。

+0

投稿していただきありがとうございます! – LandonSchropp

関連する問題