Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如果失败,`update_attribute`将返回什么?_Ruby On Rails_Ruby_Update Attributes_Update Attribute - Fatal编程技术网

Ruby on rails 如果失败,`update_attribute`将返回什么?

Ruby on rails 如果失败,`update_attribute`将返回什么?,ruby-on-rails,ruby,update-attributes,update-attribute,Ruby On Rails,Ruby,Update Attributes,Update Attribute,我有下面的代码 @user = User.find(params[:id]) if (@user.activation_status == "active") #some code here @user.update_attribute('activation_status' ,'inactive') # Line 44 #send mail to user that his account is Acivated else end 第44行是否有可能失败?因为数据库内存已

我有下面的代码

@user = User.find(params[:id])
if (@user.activation_status == "active") 
  #some code here 
  @user.update_attribute('activation_status' ,'inactive')  # Line 44
  #send mail to user that his account is Acivated
else

end

第44行是否有可能失败?因为数据库内存已满或网络故障。在那种情况下会发生什么?如果这造成了问题,有什么更好的方法来避免它?如果更新属性失败,
update\u attribute
返回什么?

如果更新属性失败,它将返回false。如果忽略返回值,也不会知道发生了什么。您可以使用更新属性!,依次调用save!,如果出现问题,这又会引发一个例外。虽然这是您不能错过的(除非您编写了catch-all-rescue语句),但如果您没有捕捉到它,它将落入Rails,并将中止请求


检查返回值通常是个好主意。

以下是
更新属性的源代码:

def update_attribute(name, value)
  send(name.to_s + '=', value)
  save(false)
end
您可以看到它更新了请求的属性,然后调用
perform\u validations
设置为
false
。因此,
update\u attribute
将返回
false
,如果任何保存回调(例如,
在保存之前
)通过返回
false
阻止记录保存


如果出现较低级别的错误,例如数据库内存不足,则我希望数据库驱动程序将此作为异常引发,并传递给您的代码。

-我知道
更新属性
我想知道关于
更新属性
的什么内容?它们都做相同的事情。update_属性和update_属性都使用attr=assignments,然后调用save.-你错了,它们在保存数据之前不做相同的事情
update_属性
检查验证,并返回false,如果保存,则对象无效,返回true,而
update_属性
保存数据而不检查验证。什么
update\u attributes
将返回我知道
update\u attributes
做什么<代码>更新属性
和&
更新属性
是两种不同的方法。我想知道关于
update\u attribute
这个答案是指update\u attribute,我在答案的原始版本中犯了一个打字错误
update_属性
返回由
save
返回的值,如回答中所述。