2016-07-29 78 views
0

我有三個模型。它們的定義如下:如何從三個具有一對一關聯的模型中獲取記錄?

#Checkout Model 
class Checkout < ActiveRecord::Base 
    belongs_to :gallery_visitor 
end 

#GalleryVisitor Model 
class GalleryVisitor < ActiveRecord::Base 
    belongs_to :gallery 
    has_one :checkout 
end 

#Gallery Model 
class Gallery < ActiveRecord::Base 
    has_many :gallery_visitors, dependent: :destroy 
end 

我願意根據結帳模型提取所有圖庫。 我怎樣才能使用includes()? 任何人都可以幫我嗎?感謝你的加入。

回答

2

嘿,你可以試試這個方法:

Gallery.includes({gallery_visitors: [:checkout]}).where(checkouts: {condition}) 
+0

我認爲他需要在結賬的基礎上收藏 –

+0

@Deepak您的查詢返回'checkout'不是畫廊。在上面的查詢中,你可以把條件放在結賬模型上,它會返回你的鞋012 –

+0

@Deepak Vishal是正確的。 –

1

您甚至可以通過添加來自關聯shorterquicker使這個查詢,

Gallery to Checkout through Gallery Visitors多個軌道辦法。

添加行has_one :checkout,through: :gallery_visitors圖庫模型,

class Gallery < ActiveRecord::Base 
    has_many :gallery_visitors, dependent: :destroy 
    has_one :checkout,through: :gallery_visitors 
end 

刷新控制檯,並嘗試此查詢

Gallery.includes(:checkout).where(checkout: {condition})

Eg: Gallery.includes(:checkout).where(checkout: {id: 1})

這使得有直接關係艦和品牌查詢更快。

相關問題