0

ユーザーが他の属性を編集するたびにパスワードを設定することなく、ユーザー情報を更新できるようにしたいと考えています。

私の現在の検証は次のとおりです。

  validates :password, presence: true, length: { minimum: 8 }
  validates :password_confirm, presence: true

どうすればこれを条件付きにすることができますか? password および password_confirm 属性が params にある場合にのみ、これらの検証を要求するのが賢明です。これを達成する方法について、いくつかのアイデアを使用できます。ありがとう。

4

1 に答える 1

0

私はこれがそれを行うべきだと思います:

validates :password, presence: true, length: { minimum: 8 }
validates :password_confirm, presence: true, :if => Proc.new { |a| a.password_changed? || a.new_record? }

メソッドの詳細については、 ActiveModel::Dirtyのドキュメントを参照してください。属性を変更するたび_changed?にプレゼンス検証を実行しても問題はありません。これは DB に永続化されるため、常にパスします (永続化されないため、条件が必要です)。passwordpassword_confirm

于 2012-11-18T23:57:21.453 に答える