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
返回的值,如回答中所述。