ActiveRecord, объединяющий отношения - PullRequest
1 голос
/ 23 сентября 2011

Мне интересно, есть ли лучший способ сделать это:

У меня есть 2 сложных отношения с несколькими объединениями, соединяющимися с таблицей D. Я хочу объединить / объединить их, чтобы получить записи таблицы D.Следующее работает, но есть ли лучший способ?

class TableD < ActiveRecord::Base

def self.relation_three
  r1 = TableA.relation_one.select("d.id")
  r2 = TableB.relation_two.select("d.id")
  where("d.id IN (#{r1.to_sql}) OR d.id IN (#{r2.to_sql})")
end

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

Можно ли вернуть класс результата активной записи, отличный отзапись на основе запроса?т.е.:

TableA.all.joins(:b).select("b.*") # Coerce into TableB class ?

Спасибо!

...