2012-08-22 32 views
0

比方說,我們有3個用戶[User name="A"], [User name="B"], [User name="C"]Rails的:其中Vs地圖(:屬性)

有間(檢查存在)一個區別:

if User.where(name: "A").first

User.all.map(&:name).include? "A" 

謝謝。

回答

5

使用where僅通過SQL檢索與名稱匹配的用戶。

映射加載所有用戶,構建其名稱數組並檢查'A'。

對於用戶性能差異可以忽略不計的小數目,但內存和時間會在一定點後大幅影響,且where更好。在數據庫中進行這項工作將是一個更好的選擇,它比天真地檢索全部數據並在Ruby中執行它更好。

+0

此外,這意味着你的第一個可能** **更快。儘管如此,我會使用'exists?'。 'User.exists?(name:「A」)' –

+0

@injekt是的,我只是在編輯它,其實;) –

+0

哈剛剛注意到你的更新:-) +1 –