我正在阅读Michael Hartl的轨道书,我很好奇这是如何工作的:
if @user.save
else
end
在if语句中,除了返回true或false之外,参数实际上没有做任何事情。
此方法似乎将模型保存到数据库,然后返回true或false。这是常见的/我是对的吗?为什么我们这样做?
答案 0 :(得分:4)
通常if @user.save
正在检查对象是否已使用ActiveRecord成功保存到数据库。从那里你可以做一些事情,比如设置flash消息并在某处重定向。在else
子句中,您可以检查@user.errors
以查看出错的原因并进行处理。
示例:
def create
#Set user object attributes using strong parameters
@user = User.new(user_params)
#Attempt to save @user
if @user.save
flash[:notice] = 'User saved successfully'
redirect_to somewhere_else_url
else
#Saving failed, we can inspect @user.errors for more information
flash[:alert] = 'User was not saved.'
#If using a form library @user.errors will be displayed graphically when rendering the :new action
render :new
end
end
答案 1 :(得分:2)
根据Michael Hartl所述,正如第6章所述, save 方法如果成功则返回true,否则返回false。
因此,如果没有错误(如验证),保存方法将成功,并将用户模型存储在数据库中,否则方法将结束并返回false。
您可以参考第6章here并查看第6.1.3节。