ActiveRecord结合关系

时间:2011-09-23 15:18:07

标签: activerecord ruby-on-rails-3.1 arel

我想知道是否有更好的方法来做到这一点:

我有两个复杂的关系,多个连接加入表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 个答案:

没有答案