2016-05-14 49 views
1

我正在學習Ruby on Rails,並且遇到了我一直無法解決的活動記錄問題。我正試圖將四個表內聯在一起並顯示它們的數據。Rails,活動記錄。將四個表加在一起

我已通過運行以下SQL樣式查詢確認我的數據庫模式是正確的。它返回我期望的數據。

select * from sailings 
INNER JOIN travelling_parties on sailings.id = travelling_parties.sailing_id 
INNER JOIN party_registers on travelling_parties.id = party_registers.travelling_party_id 
inner JOIN users on party_registers.user_id = users.id 
where users.id = 8 

在閱讀guides.rubyonrails.org上的精彩文檔後,我仍然無法找到解決方案。下面的查詢是我在控制器中提出的,但它似乎並沒有返回我所需要的。

@sailing = Sailing.joins(:travelling_parties => [{:party_registers => :user}]) 

我會很感激任何能引導我走向正確方向的人。

謝謝

編輯1:這是我的模型。我正在嘗試檢查user.id = current_user.id並基於此顯示數據。

class Sailing 
    has_many :travelling_parties 
end 

class TravelingParty 
    has_many :party_registers 
    has_many :users, through: :party_registers 
end 

class PartyRegister 
    belongs_to :user 
    belongs_to :travelling_party 
end 

class User 
    has_many :party_registers 
    has_many :travelling_parties, through: :party_registers 
end 

編輯2:下面的查詢給了我預期的結果

@sailing = Sailing.joins(:travelling_parties => {:party_registers =>:用戶})。其中( 「users.id」 => current_user.id)

感謝您的回覆。

+1

u能張貼年車型?還有什麼想從用戶表返回? – 7urkm3n

回答

0

您的答案接近於正確的,假設您已定義關聯。

class Sailing 
    belongs_to :traveling_party 
end 

class TravelingParty 
    belongs_to :party_register 
end 

class PartyRegister 
    belongs_to :user 
end 

@sailing = Sailing.joins(:travelling_parties => {:party_registers => :user})

+0

我有班Sailling has_many:travelling_parties,class TravelingParty has_many:party_registers has_many:users,through :::party_registers,class PartyRegister belongs_to:user belongs_to:travelling_party' – Aptorian