Rails' where'与协会

时间:2016-08-02 07:53:49

标签: ruby-on-rails database

我是rails的新手,我有一个包含用户ID,团队ID和号码的联接表,基本上用户可以有很多团队,团队可以有很多用户,团队属于锦标赛,这些数字应该是每场锦标赛的唯一数字,我想要做的就是获得包含来自特定锦标赛的球队的所有排,基本上类似

 MyJoinTable.where(team.tournament_id: self.team.tournament_id)

但是这不起作用,关于如何制作这个

的任何建议

2 个答案:

答案 0 :(得分:0)

基本上你有

class Team
  has_and_belongs_to_many :members
  belongs_to :tournament
end

class Member
  has_and_belongs_to_many :teams
end

class Tournament
   has_many :teams    
end

然后tournament.teams将产生所有锦标赛的球队。 如果您没有锦标赛实例,Team.where(tournament_id: an_id)也可以使用。 加入/包括会员表就可以轻松获得所有锦标赛成员。

如果您的连接表包含的数据多于连接表的ID,则has_and_belongs_to_many应替换为has_many:through关系。请参阅docs

答案 1 :(得分:0)

要实现您的目标,您可以这样做:

Team.joins(:tournaments).merge(Tournament.where(id: self.team.tournament_id))