0

私は Rails のチュートリアルに従っており、ユーザー システムが機能していますが、1 つの問題があります。ユーザーを保存するときは、コンソールだけでも、パスワードとパスワードの確認の両方が保存されていないと保存されないため、検証をオフにする必要があります。同じものに設定します。

これは苦痛であり、他の重要な検証をユーザーに追加すると潜在的に危険に思えます。それで、これに対処する良い方法はありますか?本当に、更新が自分のコードからではなく、ユーザーからのものである場合にのみ検証を適用したいのです。

したがって、ユーザーモデルには次のものがあります。

  validates :password, length: { minimum: 6 }
  has_secure_password # this does the hashing, comparisions, etc for us.
  validates :password_confirmation, presence: true

これは、ユーザーが作成されたとき、およびパスワードを再度入力する必要があるため、ユーザーが自分のプロファイルを編集しているときにうまく機能します。しかし、他の編集の場合、それは面倒です。例えば:

user = User.find_by_name("bob")
user.reputation = 200
user.save(validate: false) # I really don't want to have to care about password validations here.
4

5 に答える 5

3

あなたは呼び出すことができます

@user.save(:validate => false)
于 2012-04-28T11:12:44.520 に答える
0

作成時に検証するだけで試すことができます。これにより、パスワード(または他の変数)は登録時にのみ必要になり、既存のユーザーを編集するときには必要ありません。

于 2012-04-28T15:12:27.327 に答える
0

検証をスキップする属性を制御したい場合は、ValidationSkippergemを使用してみてください。

https://github.com/npearson72/validation_skipper

于 2012-11-19T00:30:28.127 に答える
0

パーティーには少し遅れましたが、単一の属性を更新したい場合は、検証チェックをスキップする update_attribute メソッドを使用できます。この場合、あなたは呼び出すことができます

user.update_attribute :reputation, 200
于 2015-06-24T04:06:00.543 に答える