Module: Torque::PostgreSQL::Relation::AuxiliaryStatement

Included in:
Torque::PostgreSQL::Relation
Defined in:
lib/torque/postgresql/relation/auxiliary_statement.rb

Instance Method Summary collapse

Instance Method Details

#auxiliary_statements_valuesObject

:nodoc:



7
# File 'lib/torque/postgresql/relation/auxiliary_statement.rb', line 7

def auxiliary_statements_values; get_value(:auxiliary_statements); end

#auxiliary_statements_values=(value) ⇒ Object

:nodoc:



9
# File 'lib/torque/postgresql/relation/auxiliary_statement.rb', line 9

def auxiliary_statements_values=(value); set_value(:auxiliary_statements, value); end

#bound_attributesObject

Get all auxiliary statements bound attributes and the base bound attributes as well



35
36
37
38
39
40
41
42
43
44
# File 'lib/torque/postgresql/relation/auxiliary_statement.rb', line 35

def bound_attributes
  if Torque::PostgreSQL::AR521
    visitor = ::Arel::Visitors::PostgreSQL.new(ActiveRecord::Base.connection)
    visitor.accept(self.arel.ast, ::Arel::Collectors::Bind.new).value
  else
    return super unless self.auxiliary_statements_values.present?
    bindings = self.auxiliary_statements_values.map(&:bound_attributes)
    (bindings + super).flatten
  end
end

#with(*args) ⇒ Object Also known as: auxiliary_statements

Set use of an auxiliary statement already configurated on the model



12
13
14
# File 'lib/torque/postgresql/relation/auxiliary_statement.rb', line 12

def with(*args)
  spawn.with!(*args)
end

#with!(*args) ⇒ Object Also known as: auxiliary_statements!

Like #with, but modifies relation in place.



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/torque/postgresql/relation/auxiliary_statement.rb', line 17

def with!(*args)
  options = args.extract_options!
  args.each do |table|
    instance = table.is_a?(Class) && table < PostgreSQL::AuxiliaryStatement \
      ? table.new(options) \
      : PostgreSQL::AuxiliaryStatement.instantiate(table, self, options)

    self.auxiliary_statements_values += [instance]
  end

  self
end