Rails和query:匹配ALL associations.attribute == true

时间:2012-07-25 22:52:02

标签: ruby-on-rails

在rails 3项目上:

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

我需要所有比赛,所有比赛都没有等待。

我可以在一场比赛失败时获得比赛:

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

但那还不够好。

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

1 个答案:

答案 0 :(得分: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场比赛。