2013-11-09 68 views
0

我目前有三種型號:Rails 4 - habtm與查詢條件的關係?

  • 標籤(HABTM:帖子)
  • 帖子(HABTM:標籤,有很多圖片)
  • 圖像(屬於POST)

我想,標籤控制器,獲取與標籤關係的所有帖子,這與圖像有一定的關係。

的有點像:

Tag.posts.where("images").nil?(當然不喜歡這樣,但我希望你能看到我的標題)

首先,我真的很新的Rails,卻沒有在我的模型上完成任何查詢條件(僅* .all或* .find)

當然,我可以獲取屬於該標籤的所有帖子,循環訪問帖子並刪除那些沒有圖片關係的帖子,但這看起來不對;)

* 編輯:
也許我不清楚,我想獲得所有與帖子有關係的標籤(Tags.all()),它與圖像有關係。 !
更多類似:Tags.all.posts.images = NULL;)*

回答

0

在SQL中檢查相關記錄的存在很容易,但據我所知,Rails中沒有「簡單」的語法。簡單連接的麻煩是具有n個圖像的文章將在結果集中出現n次 - 您可以對結果執行不同的處理,但是對於增加的數據集,效率會越來越低。

Tag.joins(:posts).where("exists (select null from images where images.post_id = posts.id)") 

同樣,對於沒有圖像的帖子標籤:

Tag.joins(:posts).where("not exists (select null from images where images.post_id = posts.id)") 
+0

謝謝!這與我想要的非常接近;現在我得到所有有圖像的帖子的標籤,但我也收到沒有圖像的帖子。我應該怎麼做才能保留與圖像的帖子?循環?再一次感謝你! –

+0

你可以顯示你獲得帖子的代碼嗎? –

+0

非常感謝您的關注!我製作了一個包含所有代碼,表格等的pastebin。請告訴我你是否需要更多東西! http://pastebin.com/35RmzARi –

0

你可以這樣來做:

Tag.joins(posts: :images) 

這將加載有有圖片的帖子所有標籤。