ActiveRecord, объединяющий отношения

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

У меня есть 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 ?

Спасибо!

0 ответов

Другие вопросы по тегам