我正在学习ruby on 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
在阅读guide.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 =>:user})。where(“users.id”=> current_user.id)
感谢您的回复。
答案 0 :(得分: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})