2011-09-10 22 views
0

驅動的has_many汽車 汽車HAS_ONE所有者用限制性

ActiveRecord的關聯,我想返回的有汽車行駛owner_id = 1 這裏的漁獲驅動程序。我想返回所有的驅動程序與汽車(與owner_id = 1)急切加載。如果汽車的車主不是owner_id = 1我需要Driver.cars = [](或無)

問題是,當你渴望加載與關聯的限制所有驅動程序不要返回。

當您使用連接時,汽車永遠不會被加載爲活動記錄。

有什麼想法?這個問題實際上比你想象的更復雜。

我試過,加入,所有,首先,找到條件,包括等等,以及之間的每一個變化。

回答

0

以下是一些建議:你可以用你的「驅動程序的has_many車」在代碼支架,並將其寫入像一個適當的Ruby/Rails類,這樣的人閱讀你的問題就明白了僅僅指剛通過看一下:

class Driver < ActiveRecord::Base 
    has_many :cars 
end 

class Car < ActiveRecord::Base 
    has_one :owner 
end 

更不用說在你的文章中粘貼Owner類也不會有什麼傷害。另外Driver.cars表明'汽車'是一種類別的方法,而不是AR協會這是誤導。更自然的事情將是定義你這樣的汽車方法:

class Car < ActiveRecord::Base 
    belongs_to :owner 
end 

最後,回答你的問題。所有渴望加載的怪癖,與你的情況以及我相信在這裏作了說明: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html 在「急切加載的關聯」標籤下。