0

Rails 3 プロジェクトの場合:

has_many の大会がある試合があります。すべての試合には 2 つの競技があり、競技は保留中 (true/false) です。

すべての大会が保留されていないすべての試合が必要です。

1 つの競争が偽である試合を取得できます。

scope :confirmed, joins(:competitions).where("pending = ?", false)

しかし、それだけでは十分ではありません。

さらにコードを表示する必要がある場合はお知らせください。御時間ありがとうございます!

4

1 に答える 1

0

オブジェクト ドメインから実現可能な場合は、2 つの異なる名前の 1:1 関連付けを作成できます。

そうでない場合は、SQL クエリを使用して match_ids を見つけることができます。

Match.find_by_sql(%q{SELECT * FROM "matches" WHERE id IN (SELECT "match_id" FROM "competitions"  WHERE ("pending" = 'f') GROUP BY "match_id" HAVING COUNT(*) > 1)})

ただし、これは、各試合で最大 2 つの競技会を開催することにも依存します。

于 2012-07-26T00:11:19.783 に答える