ActiveRecord присоединяется, где массив идентификаторов себя - PullRequest
0 голосов
/ 01 марта 2019

Я бы хотел связать запрос с объединениями и точкой в ​​первой модели

FbGroup.joins(:fb_posts).where(id: [1,2])
# this returns a lot of extra rows

FbGroup.joins(:fb_posts).where('fb_groups.id IN (?)', acct_ids)
# also tried this with no luck

Как я могу сначала выполнить фильтрацию по fb_groups с конкретными идентификаторами при выполнении объединений?

Ответы [ 2 ]

0 голосов
/ 01 марта 2019
FbGroup.distinct.joins(:fb_posts).where
              .not(id: FbGroup.joins(:fb_posts)
                       .where(fb_groups: {id: [1,2]}).distinct)
0 голосов
/ 01 марта 2019

Разве это не работает, просто использовать оба?

FbGroups.joins(:fb_groups).where(id: [1,2]).where('fb_groups.id IN (?)', acct_ids)

PS Вы также можете использовать

FbGroups.joins(:fb_groups).where(id: [1,2]).where(fb_groups: {id: acct_ids})

или, поскольку оба where s теперь используют хэш-аргументы:

FbGroups.joins(:fb_groups).where(id: [1,2], fb_groups: {id: acct_ids})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...