Rails Active Record выбирает родительский и дочерний элементы как один результат

У меня есть отношение родитель/потомок в моем приложении

class Polling
 has_many :alerts, :dependent => :destroy

class Alert
 belongs_to :polling

На моей индексной странице для предупреждений мне нужно показать некоторые данные от каждого родителя, и это приводит к двум запросам

Alert Load (6.1ms)  SELECT * FROM (SELECT * FROM "ALERTS" INNER JOIN "POLLINGS" ON "POLLINGS"."ID" = "ALERTS"."POLLING_ID" ORDER BY "ALERTS"."ID" DESC) WHERE ROWNUM <= 1
Polling Load (1.8ms)  SELECT "POLLINGS".* FROM "POLLINGS" WHERE "POLLINGS"."ID" = 10113 AND ROWNUM <= 1

Очевидно, что это делает время загрузки страницы довольно ужасным, поскольку она должна перебирать каждую страницу и также извлекать родительский объект.

Я пробовал несколько вещей, таких как

> Alert.joins(:polling).where(...)
> Alert.includes(:polling).where(...)
> Alert.joins(:polling).select('*').where(...)

И каждый раз, когда я посещаю свою индексную страницу, я получаю два разных запроса. Один для каждого оповещения, а затем еще один для получения родительских данных. Как я могу сделать это в одной строке, чтобы при извлечении предупреждений я также получал связанные с ними родительские данные? Кажется, нет никакого способа сделать это с другого конца, потому что, если я сделаю Pollings.where(...), это не захватит детей как группу.

6
задан Oranges13 24 July 2012 в 19:12
поделиться