2012-04-08 4 views
0

私はpassword_digestとして保存されるパスワード属性を持つユーザーモデルを持っています。 編集したいユーザのページとパスワードの編集ページを分けて、 adminがパスワードを入力する必要がなくなるたびに入力する必要があります。このため私は余分なアクション/ビューを作成しました。レール3.1 partial_updatesはパスワードでは機能しないようです

私の問題は、私がユーザー情報を更新すると、パスワードの入力時にエラーが発生するということです。 フォームにパスワードフィールドがありません。これは、partial_updatesがパスワード属性で機能していないという結論につながります(私はすでにコンソールでそれが有効になっていることをテストしています)。

これは私に何か間違っているのですか?違う?

答えて

0

は@normalocity挙げアプローチが、コントローラに擬似属性を設定することなく、我々は、(本質的にrestful_authenticationから取られた)これを行う:

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疑似属性が設定されている場合は、パスワードが変更されており、検証が実行されている必要があると想定します。したがって、railscastsのエピソードのように、擬似属性updating_passwordを設定する必要はありません。

0

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

Railscasts.com episode #41は、これを行う方法を示しています。 railscastsと同様

関連する問題