0

在 Rails 3 项目中:

我有很多比赛的比赛。每场比赛将有 2 场比赛,比赛正在进行中(真/假)。

我需要所有比赛都没有进行的比赛。

我可以得到一场比赛是假的比赛:

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

但这还不够好。

如果我需要显示更多代码,请告诉我。谢谢你的时间!

4

1 回答 1

0

如果从对象域可行,您可以创建两个不同名称的 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 回答