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