这是代码:
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。
答案 0 :(得分:1)
模型上的attr_accessible设置?
http://apidock.com/rails/ActiveRecord/Persistence/update_attributes
答案 1 :(得分:0)
有时当我遇到这样的问题时,我会将更改update_attributes
更新为update_attributes!
- 这会强制立即抛出异常,并且可以指出您返回的值的确切原因保存错误。
如果未保存数据,应该返回false。 According to the docs:
如果由于资源无效而导致保存失败,则会返回false。
以下是来自导轨来源的这个片段(请注意update_attibutes
调用save
下的封面):
def save(*)
begin
create_or_update
rescue ActiveRecord::RecordInvalid
false
end
end
因此,如果保存记录有问题,它会专门返回false
,而不是nil
。