0

我有以下“注册”表:

铭文表

一个玩家可以加入多场比赛(如图所示,玩家#12 加入了#59 的比赛)。

现在我想向所有注册相同游戏的玩家展示current_player

所以我虽然不得不:

  1. 在哪里捕获所有 match_idplayer_id = current_player
  2. 在每场比赛中抓住所有球员。

这是好方法吗?还是我应该知道一些魔法?我怎样才能做到这一点 ?谢谢你的帮助。

更新

我试过这个:

@matchs_du_joueur = Registrations.where(:player_id => current_user.id)  

@joueurs = Player.joins(:registrations).where(:registrations => { :match_id => @matchs_du_joueur.match_id })

我有这个错误:

undefined method `match_id' for #<ActiveRecord::Relation:0x6d8a3b0>

但是,我已经定义了所有 has_many_and_belongs_to 。不知道该怎么办。

4

1 回答 1

2

是的,就是这样。我假设

class Match < ActiveRecord::Base
  has_many :registrations
  has_many :players, through: :registrations
end

class Player < ActiveRecord::Base
  has_many :registrations
  has_many :matches, through: :registrations
end

class Registration < ActiveRecord::Base
  belongs_to :match
  belongs_to :player
end

那么您可以使用以下内容获取 current_player 与之匹配的所有玩家

Player.joins(:registrations).where(registrations: { match_id: current_player.match_ids })
于 2013-02-04T12:08:17.967 回答