rails update_attributes方法返回nil

时间:2012-05-10 14:30:10

标签: ruby-on-rails ruby-on-rails-3.1

这是代码:

def update
  if @user.update_attributes(params[:user])
    redirect_to my_account_path
  else
    redirect_to account_path
  end
end
验证失败后,

@user.update_attributes应返回truefalse,但会返回nil

使用Rails 3.1.2& Ruby 1.9.2。

2 个答案:

答案 0 :(得分:1)

答案 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