2012-07-25 40 views
0

在rails 3项目上:Rails和查询:匹配ALL associations.attribute == true

我有匹配的has_many比赛。每场比赛将有2场比赛,比赛尚待完成(真/假)。

我需要所有的比赛,其所有比赛都没有悬而未决。

我能得到的比赛,其中一场比赛是假的:

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

不过这也够只是不太好。

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

+0

如果从对象域可行,则可以创建两个不同名称的1:1关联。 – bento 2012-07-25 23:26:31

回答

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场比赛中每场比赛。