4

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_passwordparams[:user]

あなたがくれたどんな助けにも感謝します。この質問に不足している情報があると思われる場合は、さらに情報を求めてください。

4

1 に答える 1

7

attr_accessor :current_password次に、モデルにも追加する必要がある場合があります。さらに詳しい情報については、Devise Wikiとこの問題も参照してください 。

于 2012-07-17T19:08:20.877 に答える