无法更新用户属性 - Rails和Devise

时间:2012-07-10 21:00:54

标签: ruby-on-rails ruby activerecord devise

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

此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],但没有成功。

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

1 个答案:

答案 0 :(得分:7)

然后您可能还需要将attr_accessor :current_password添加到模型中。另请参阅Devise Wikithis issue以获取进一步的见解。