2011-04-08 80 views
2

在我的Rails應用程序中,我有兩個模型:簡報和公司。簡報有:,公司,:通過=>資源和公司有n,:簡報,:通過=>資源。查詢空的Datamapper有n個關係

我試圖找到所有沒有任何公司與他們有關的簡報。由於不正確的代碼,這可能看起來像:

Briefing.all(:companies => nil) 

Briefing.all(:companies.eql => []) 

當然,但那些不工作。有什麼想法嗎?

+0

可能重複的[查找所有沒有關聯的記錄](http://stackoverflow.com/questions/1314408/finding-all-records-without-associated-ones) – 2011-04-09 00:50:51

+0

不完全一樣 - 那個人有一個n,belongs_to關係,在這種情況下,在belongs_to類的空id列上搜索很簡單。在我的情況下,它有兩個通過資源有n個關係,這意味着在任何模型中都沒有id列。 – 2011-04-09 00:59:09

+1

我認爲這種類型的匹配和m:m關聯可能存在一個錯誤。它應該在1:m中介協會上工作。 – dkubb 2011-04-09 17:34:50

回答

1

我相信丹只是pushed a change,使得運行這樣的查詢成爲可能。所以,如果你有一個User.has N,:職位和你執行一個查詢:

User.all(:posts => nil) 

然後生成的SQL看起來就像是:

SELECT "id" FROM "users" WHERE NOT("id" IN (SELECT "user_id" FROM "posts")) ORDER BY "id" 

這將在DataMapper的1.1可用.1

+0

其實我不確定它是一回事。該提交更多的是gte/gt/lte/lt類型匹配,其中有人使用nil作爲匹配的值。它實際上也隻影響內存中的匹配。 – dkubb 2011-04-09 17:33:32