Rails で 華麗に sql union する
model の中にこんなのを書く
[crayon lang=”ruby”]
class User < ActiveRecord::Base
module UnionHack
def union(*relations)
from '((' + relations.map { |r| r.ast.to_sql }.join(') UNION (') + ')) AS ' + self.table_name
end
end
extend UnionHack
end
[/crayon]
そんで、以下のように使える。
[crayon lang="ruby"]
User.union(@group1.users, @group2.users).limit(20)
[/crayon]
参考: http://coderwall.com/p/9hohaa