我有复杂的查询,我想加入自己进行额外的计算。在sql我可以做
SELECT t1.*, t2.*
FROM (SQL) AS t1
INNER JOIN
(SQL) AS t2
ON t1.num = t2.num - 1
假设SQL是我要加入的查询。
如何在使用ActiveRecord / arel(或其他东西)的rails中执行此操作以获取ActiveRecord :: Relation并能够在其上使用where()。
如果我用sql执行并执行/ select_all我得到PG:结果或哈希,并且不能再使用memthod。
答案 0 :(得分:3)
第一个解决方案是使用to_sql方法插入其他查询:
Place.select("places.*, communes.*").joins("INNER JOIN (#{
Commune.where(:id => [1,2,3]).to_sql
}) as communes ON communes.id = places.commune_id")
第二种解决方案是使用Arel的merge方法:
Place.select("places.*, communes.*")
.joins(:commune)
.merge(Commune.where(:id => [1,2,3]))