2013-05-14 74 views
0

我需要從其他關聯模型中獲取所有關聯模型,我首先要在其上運行查詢。Rails:從擁有多個關聯中獲取所有關聯的模型

例如,我得到了Post模型和Tag模型。我需要獲取與某些標籤關聯的所有帖子。 有沒有問題,如果我只有一個標籤 - 就叫「tag.posts」,但如果我有更多的,然後一個標籤 - 例如,我需要做的somethink,如:

Post.where(id: PostTag.where(tag_id: some_ids).pluck(:category_id).uniq) 

我相信那Rails有一個內置的解決方案。那麼,有人知道嗎?

+0

你的模型之間有什麼類型的關聯?根據你的例子,它看起來像一個'has_many:through'。如果我正確理解你,你是否試圖獲得與多個標籤相關聯的所有帖子? – mmichael

回答

0

我的想法是:

Post.joins(:post_tags).where('post_tags.tag_id' => some_ids).uniq 

你可以使它更容易重用範圍。我不認爲這種情況有內置的方法。

+0

作用域可以是:'scope:from_tag_ids, - >(some_ids){joins(:post_tags).where('post_tags.tag_id'=> some_ids).uniq} –