Как искать в таблице соединений в Rails 3, которая не имеет модели? - PullRequest
0 голосов
/ 11 декабря 2011

У меня есть две модели merchant и category с отношением HABM, поэтому есть объединяющая таблица с именем categories_merchants

Как мне написать следующий запрос в ActiveRecords?

SELECT
    categories_merchants.merchant_id
WHERE
    categories_merchants.category_id IN (1,2,3,4)

ПРИМЕЧАНИЕ: В соединительной таблице нет модели, она работает в Rails 3 автоматически, без необходимости ее использования.

1 Ответ

1 голос
/ 11 декабря 2011

Если вы хотите выполнить такой запрос, вы должны преобразовать свой HABTM в has_many :trough и создать модель для объединяющей таблицы и запроса на основе этого.

В качестве альтернативы, , но, возможно, с худшимпроизводительность , вы можете сделать:

Merchant
  .select(:id)
  .joins("categories_merchants ON categories_merchants.merchant_id = merchant.id")
  .where("categories_merchants.category_id IN (?)", [1,2,3,4])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...