Class: Arel::Having

Inherits:
Compound show all
Defined in:
lib/arel/algebra/relations/operations/having.rb

Instance Attribute Summary

Attributes inherited from Compound

#relation

Attributes included from Relation

#count

Instance Method Summary collapse

Methods inherited from Compound

#attributes, #build_query, #engine, #eql?, #hash, requires, #unoperated_rows

Methods included from Relation

#bind, #call, #christener, #compiler, #exclusion_predicate_sql, #externalizable?, #externalize, #inclusion_predicate_sql, #join?, #primary_key, #session, #to_sql

Methods included from Relation::DefaultOperations

#attributes, #groupings, #inserts, #joins, #locked, #orders, #projections, #skipped, #sources, #taken, #wheres

Methods included from Relation::AttributeAccessable

#[], #find_attribute_matching_attribute, #find_attribute_matching_name, #position_of

Methods included from Relation::Operable

#alias, #join, #lock, #outer_join

Methods included from Relation::Operable::Writable

#delete, #insert, #update

Methods included from Relation::Enumerable

#each, #first

Constructor Details

#initialize(relation, *predicates, &block) ⇒ Having

Returns a new instance of Having.



7
8
9
10
11
# File 'lib/arel/algebra/relations/operations/having.rb', line 7

def initialize(relation, *predicates, &block)
  predicates = [yield(relation)] + predicates if block_given?
  @predicates = predicates.map { |p| p.bind(relation) }
  @relation   = relation
end

Instance Method Details

#havingsObject



13
14
15
# File 'lib/arel/algebra/relations/operations/having.rb', line 13

def havings
  @havings ||= relation.havings + predicates
end