2016-05-14 2 views
1

私はレール上でルビーを学んでおり、私は解決できなかったアクティブなレコードの問題にぶつかってきました。私は内部の4つのテーブルを一緒に結合し、それらからデータを表示しようとしています。Rails、アクティブレコード。 4つのテーブルを結合する

次の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}]) 

私は適切な方向に私を操縦することができます誰でも感謝します。

ありがとうございました

EDIT 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 

EDIT 2:( "users.id"。(:travelling_parties => {:ユーザー:party_registers =>})次のクエリは私に私の意図した結果を

@sailing = Sailing.joins得=> 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、TravelingParty has_many:party_registers has_many:users、:party_registers、class PartyRegister belongs_to:user belongs_to:travelling_party'というクラスを持っています – Aptorian

関連する問題