Module: ActiveRecord

Defined in:
lib/active_record/union_relation.rb,
lib/active_record/union_relation/version.rb

Defined Under Namespace

Classes: UnionRelation

Class Method Summary collapse

Class Method Details

.union(*columns, discriminator: "discriminator") ⇒ Object

Unions require that you have an equal number of columns from each subquery. The columns argument being passed here is any number of symbols that represent the columns that will be queried. When you then go to add sources into the union you’ll need to pass the same number of columns.

One additional column will be added to the query in order to discriminate between all of the unioned types. Then when the objects are going to be instantiated, we map the columns back to their original names.



221
222
223
# File 'lib/active_record/union_relation.rb', line 221

def self.union(*columns, discriminator: "discriminator")
  UnionRelation.new(columns, discriminator).tap { |union| yield union }.all
end