为什么要这样使用 "if @user.save"?
why is "if @user.save" used in this way?
我正在研究 Michael Hartl 的 rails 书,我很好奇它是如何工作的:
if @user.save
else
end
在 if 语句中,参数实际上除了 return true 或 false 之外没有做任何事情。
这个方法好像是把模型保存到数据库然后return判断对错。这个common/am我说的对吗?为什么我们要这样做?
通常 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
根据 Michael Hartl 的说法,如第 6 章所述,save 方法return如果成功则为真,否则为假。
因此,如果没有错误(如验证),save 方法将成功并将用户模型存储在数据库中,否则该方法将结束并且 return false。
您可以参考第 6 章 here 并查看第 6.1.3 节。
我正在研究 Michael Hartl 的 rails 书,我很好奇它是如何工作的:
if @user.save
else
end
在 if 语句中,参数实际上除了 return true 或 false 之外没有做任何事情。
这个方法好像是把模型保存到数据库然后return判断对错。这个common/am我说的对吗?为什么我们要这样做?
通常 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
根据 Michael Hartl 的说法,如第 6 章所述,save 方法return如果成功则为真,否则为假。
因此,如果没有错误(如验证),save 方法将成功并将用户模型存储在数据库中,否则该方法将结束并且 return false。
您可以参考第 6 章 here 并查看第 6.1.3 节。