2013-11-24 69 views
1

當我這樣做:爲什麼用一組ID找到返回數組,而`where`與ID數組返回一個ActiveRecord ::關係

[29] pry(main)> u=User.where("id in (?)",[1,2]) 
=> ActiveRecord::Relation 
[31] pry(main)> 

而:

[33] pry(main)> u=User.find([2,3]) 
... 
[34] pry(main)> u.class 
=> Array 
[35] pry(main)> 

我知道這兩個都非常相似,但爲什麼沒有找到一個數組返回一個ActiveRecord :: Relation。有什麼深層原因嗎?我會認爲用id數組查找會返回一個ActiveRecord :: Relation。

THX

+0

的原因是'find'返回實際的對象,而'where'是查找關係。這只是他們在Rails中所做的設計選擇。有時你會立即想要這個對象,而其他時候你只想要一個關係。 – Max

+0

看起來像Acti – timpone

回答

0

實際上在軌道找到呼叫find_with_ids方法,後者又調用的情況下,你find_some傳遞數組作爲參數在它和find_some工作如下: - 結果=其中(表[primary_key]。在(ids))。to_a 即將activerecord:關係對象轉換爲數組。因此結果提供了一個數組。

你可以看看他們的源代碼

相關問題