2013-05-14 73 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} –