0

次の「登録」テーブルがあります。

碑文表

プレーヤーは複数の試合に参加できます(写真のように、プレーヤー#12は試合#59に参加しました)。

ここで、と同じゲームに登録しているすべてのプレーヤーを表示したいと思いますcurrent_player

だから私はしなければならなかったが:

  1. ここですべてのmatch_idをキャッチしますplayer_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 に答える