2013-05-14 2 views
0

Мне нужно получить все связанные модели из другой связанной модели, на которой я хочу сначала запустить запрос.Rails: получить все связанные модели из has-many association

Например, у меня появилась модель модели и модели тегов. Мне нужно получить все сообщения, связанные с некоторыми тегами. Там нет никаких проблем, если у меня есть только один тег - просто позвонить «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}' –

Смежные вопросы