Rails (3.0.9) を Devise (1.5.3) で使用していますが、何らかの理由で属性を更新できない User モデルがあります。
この User オブジェクトのフォームには、devise のものを含む多くの属性があります: password と password_confirmation など。
フォームを送信すると、ロガーでこれを取得します。
WARNING: Can't mass-assign protected attributes: current_password
しかし、追加current_password
すると次のattr_accessible
ようになります。
ActiveRecord::UnknownAttributeError at /users
unknown attribute: current_password
私はDeviseにはあまり興味がありませんが、 current_password は単なる仮想属性だと思います。このエラーは非常に厄介です。なぜこれが起こっているのか分かりますか? 私は無知です。
ところで、私のUsers::RegistrationsController#update
行動:
def update
logger.error "SALMONELLA " + self.resource.password.inspect
self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
#params[:user].delete [:current_password]
if resource.update_attributes(params[:user])
Resque.enqueue(MdcUpdateUser, resource.id)
set_flash_message :notice, :updated if is_navigational_format?
sign_in resource_name, resource, :bypass => true
respond_with resource, :location => after_update_path_for(resource)
else
clean_up_passwords(resource)
respond_with_navigational(resource){ render_with_scope :edit }
end
end
Devise を使用してみましたが、ハッシュからのupdate_without_password
削除も試みましたが、成功しませんでした。current_password
params[:user]
あなたがくれたどんな助けにも感謝します。この質問に不足している情報があると思われる場合は、さらに情報を求めてください。