我通過邁克爾·哈特爾的軌道書的工作,我很好奇它是如何工作:爲什麼以這種方式使用「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
我想我只是更習慣於如果陳述的參數只是一個變量,存儲真或假 –