4

我正在将 Rails (3.0.9) 与 Devise (1.5.3) 一起使用,并且我有一个用户模型,其中的属性由于某种我不知道的原因而无法更新。

此 User 对象的表单具有许多属性,包括来自 devise 的属性:例如 password 和 password_confirmation。

当我提交表单时,我在记录器中得到了这个:

WARNING: Can't mass-assign protected attributes: current_password

但是当我添加时current_passwordattr_accessible我得到:

ActiveRecord::UnknownAttributeError at /users unknown attribute: current_password

我不是很喜欢设计,但我认为 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

我尝试过使用 Deviseupdate_without_password并尝试current_passwordparams[:user]哈希中删除但没有成功。

我很感激你给我的任何帮助。如果您认为此问题中缺少任何信息,请询问更多信息。

4

1 回答 1

7

然后您可能还必须添加attr_accessor :current_password到您的模型中。另请参阅 Devise Wiki此问题以获取更多信息。

于 2012-07-17T19:08:20.877 回答