繁体   English   中英

Rails,活跃的记录。 将四张桌子连在一起

[英]Rails, active record. Joining four tables together

我正在学习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)

谢谢你的回复。

假设您已定义关联,您的答案接近正确。

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})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM