2012-07-25 37 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場比賽中每場比賽。