2013-08-27 47 views
1

我正在構建一個用戶有很多事件的Rails應用程序。在子協會上調用方法時避免錯誤

如果用戶有一個事件,我做current_user.events.each然後一切都很好,但如果用戶沒有任何事件引發未定義的方法錯誤,並且整個應用程序停止工作。

作爲一個PHP用戶,我會首先檢查變量是否在循環之前被設置。 Rails是否有一種在模型中啓動方法的漂亮方法,不管我還是應該檢查?

回答

2
current_user.events.try(:each) 

這將簡單地返回的each常規輸出,如果events不是零,並將返回nil否則 - 示數不出來。

0

你可以做

if current_user.events # This ensures that that the user at least has 1 event 
    current_user.events.each 
    # rest of the code 
end 
0

使用較新版本的rails時,這應該不會發生空白數組(提供您有一個數組)。

總是有.empty?

if !current_user.events.empty? 
    .. 
end 
+0

負運營商傷Ruby的可讀性,這是如此的珍貴。在這種情況下最好使用'.present?'。 – depa

+0

一個公平點,但它在幕後做同樣的事情;) – TomDunning