我通过迈克尔·哈特尔的轨道书的工作,我很好奇它是如何工作:为什么以这种方式使用“if @ user.save”?
if @user.save
else
end
在if语句,这种观点实际上并没有做任何事情,除了多返回true或false。
此方法似乎将模型保存到数据库,然后返回true或false。这是常见的/我是对的吗?为什么我们这样做?
我通过迈克尔·哈特尔的轨道书的工作,我很好奇它是如何工作:为什么以这种方式使用“if @ user.save”?
if @user.save
else
end
在if语句,这种观点实际上并没有做任何事情,除了多返回true或false。
此方法似乎将模型保存到数据库,然后返回true或false。这是常见的/我是对的吗?为什么我们这样做?
通常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
据迈克尔哈特尔,因为它是在第6章描述的,如果它成功和否则为false的节省方法返回true。
因此保存如果没有错误(如验证)并将用户模型存储在数据库中,方法将成功,否则方法将结束并返回false。
您可以参考第6章here并查看第6.1.3节。
但在我看来,如果@ user.save也在进行保存 - 它将模型保存到数据库,然后返回true –
正确。 '@ user.save'将保存该对象,并且只有在没有错误的情况下保存时才返回true,如果有错误,则返回false。这使您可以根据数据库保存是否成功来编写逻辑。 http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-save – danielrsmith
我想我只是更习惯于如果陈述的参数只是一个变量,存储真或假 –