我正在構建一個用戶有很多事件的Rails應用程序。在子協會上調用方法時避免錯誤
如果用戶有一個事件,我做current_user.events.each
然後一切都很好,但如果用戶沒有任何事件引發未定義的方法錯誤,並且整個應用程序停止工作。
作爲一個PHP用戶,我會首先檢查變量是否在循環之前被設置。 Rails是否有一種在模型中啓動方法的漂亮方法,不管我還是應該檢查?
我正在構建一個用戶有很多事件的Rails應用程序。在子協會上調用方法時避免錯誤
如果用戶有一個事件,我做current_user.events.each
然後一切都很好,但如果用戶沒有任何事件引發未定義的方法錯誤,並且整個應用程序停止工作。
作爲一個PHP用戶,我會首先檢查變量是否在循環之前被設置。 Rails是否有一種在模型中啓動方法的漂亮方法,不管我還是應該檢查?
current_user.events.try(:each)
這將簡單地返回的each
常規輸出,如果events
不是零,並將返回nil
否則 - 示數不出來。
你可以做
if current_user.events # This ensures that that the user at least has 1 event
current_user.events.each
# rest of the code
end
使用較新版本的rails時,這應該不會發生空白數組(提供您有一個數組)。
總是有.empty?
if !current_user.events.empty?
..
end
負運營商傷Ruby的可讀性,這是如此的珍貴。在這種情況下最好使用'.present?'。 – depa
一個公平點,但它在幕後做同樣的事情;) – TomDunning