0

password_digestとして保存されるパスワード属性を持つユーザーモデルがあります。私がやりたいことは、ユーザーの編集ページとパスワードの編集ページを分離して、管理者が何かを変更する必要があるたびにパスワードを入力する必要がないようにすることです。このために、追加のアクション/ビューを作成しました。

私の問題は、ユーザー情報を更新すると、フォームにパスワード フィールドがないにもかかわらず、パスワード検証エラーが発生することです。これは、partial_updatesがパスワード属性で機能していないという結論につながります(有効になっていることをコンソールですでにテストしているため)

これは私が何か間違ったことをしているのですか、それとも別の方法でアプローチする必要がありますか?

4

2 に答える 2

0

パスワードを変更する場合にのみ、パスワードを検証する必要があります。変更されていない場合は、フィールドの検証をpasswordスキップする必要があります。

Railscasts.comのエピソード #41で、これを行う方法を説明しています。

于 2012-04-08T13:51:45.410 に答える
0

@normalocity で言及されている railscasts アプローチと同様ですが、コントローラーに疑似属性を設定する必要はありません。

attr_accessor :password

validates :password,
          :length => { :minimum => 8 },
          :confirmation => true,
          :presence => true,
          :if => :password_required?

def password_required?
  password_digest.blank? || !password.blank?
end

基本的に、password_digest(新しいレコードに対して) まだ設定されていない場合、またはpassword疑似属性が設定されている場合は、パスワードが変更され、検証を実行する必要があることを意味します。updating_passwordしたがって、Railscasts のエピソードのように疑似属性を設定する必要はありません。

于 2012-04-08T17:27:24.980 に答える