我正在使用 Rails3 中的设计。我面临一个更新用户属性的问题。这是当前用户,当我尝试更新用户时,它没有更新。当我在@user.errors 中看到时,它说密码不能为空。我已经为此浏览了设计文档并使用了 upate_without_password(params[:user]) 但不适用于我。只是为了知道我正在使用 Mongodb。我也经历了 stackoverflow 中发布的相同问题,但对我不起作用。让我分享一下代码:
在用户模型中:有这样的密码验证:
validates :password,
presence: true,
confirmation: true,
length: { minimum: 5, maximum: 16 }
在用户控制器中:
protect_from_forgery except: :update
def update
@user = User.find(params[:id])
if @user.update_without_password(params[:user])
sign_in(current_user, :bypass=>true)
respond_to do |format|
format.json {render :json => current_user.to_json(:only => [ :status])}
end
else
respond_to do |format|
format.json {render :json => @user.errors.to_json}
end
end
end
这是我在请求中发送的参数
Parameters: {"user"=>{"status"=>"verified", "_id"=>"user1"}, "id"=>"user1"}
我也在 Rails 控制台中尝试过。它在我 update_attributes 时显示为假,但当我检查用户对象时,它显示我已更新。
1.9.3p286 :008 > user.update_attributes({"status"=>"verified"})
=> false
有什么建议我缺少什么吗?