2012-05-10 89 views
0

對於這個令人難以置信的簡單問題,事先抱歉,但是在設置變量的同時檢查一個條件的最佳方法是什麼?例如,我有:通過設置變量急切加載

@friends = [] 
@user.facebook_friends.each do |key,value| 
    if test = Authorization.includes(:user).find_by_uid(key) != nil 
    @friends << {"name" => test.user.name, "facebook_image_url" => test.user.facebook_image_url} 
    end 
end 

我試圖在用戶記錄來拉我扯的授權記錄,以儘量減少我的數據庫查詢。我知道我不能寫

test = Authorization.includes(:user).find_by_uid(key) != nil 

爲了設置測試變量。編寫這些代碼的最佳方法是什麼?

回答

3

你只需要括號:

(test = Authorization.includes(:user).find_by_uid(key)) != nil 

而且,這裏是一個更軌的方式來做到這一點:

unless (test = Authorization.includes(:user).find_by_uid(key)).nil? 
    @friends << {"name" => test.user.name, "facebook_image_url" => test.user.facebook_image_url} 
end 
+0

哇!我以爲我曾嘗試過,並沒有奏效。我只是試了一遍,它確實!感謝您回答我的愚蠢問題。 – Alex