1

这是代码:

def update
  if @user.update_attributes(params[:user])
    redirect_to my_account_path
  else
    redirect_to account_path
  end
end

@user.update_attributes应该返回true或者false当验证失败但它返回时nil

使用 Rails 3.1.2 和 Ruby 1.9.2。

4

2 回答 2

1

模型上的 attr_accessible 设置?

http://apidock.com/rails/ActiveRecord/Persistence/update_attributes

于 2012-05-10T15:50:45.377 回答
0

有时当我遇到这样的问题时,我会将更改更新update_attributesupdate_attributes!- 这可能会强制引发立即异常,并可以准确指出返回的值是错误保存的原因。

如果未保存数据,它应该返回 false。根据文档

如果由于资源无效而导致保存失败,则将返回 false。

这是来自 rails 源代码的片段(请注意,在幕后update_attibutes调用save):

def save(*)
  begin
    create_or_update
  rescue ActiveRecord::RecordInvalid
    false
  end
end

因此,它专门返回false,而不是nil在保存记录时出现问题。

于 2012-05-10T16:02:50.887 回答