Module: ActiveScaffold::OuterJoins

Extended by:
ActiveSupport::Concern
Defined in:
lib/active_scaffold/extensions/left_outer_joins.rb

Instance Method Summary collapse

Instance Method Details

#build_arelObject



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/active_scaffold/extensions/left_outer_joins.rb', line 39

def build_arel
  if left_outer_joins_values.empty?
    super
  else
    relation = except(:left_outer_joins)
    join_dependency = ActiveRecord::Associations::JoinDependency.new(@klass, left_outer_joins_values, [])
    join_dependency.join_associations.each do |association|
      relation = association.join_relation(relation)
    end
    relation.build_arel
  end
end

#left_outer_joins(*args) ⇒ Object Also known as: left_joins



15
16
17
18
# File 'lib/active_scaffold/extensions/left_outer_joins.rb', line 15

def left_outer_joins(*args)
  check_if_method_has_arguments!('left_outer_joins', args)
  spawn.left_outer_joins!(*args.compact.flatten)
end

#left_outer_joins!(*args) ⇒ Object Also known as: left_joins!



26
27
28
29
30
# File 'lib/active_scaffold/extensions/left_outer_joins.rb', line 26

def left_outer_joins!(*args)
  self.joins_values += [''] # HACK: for using left_outer_joins in update_all/delete_all
  self.left_outer_joins_values += args
  self
end

#left_outer_joins_valuesObject



6
7
8
# File 'lib/active_scaffold/extensions/left_outer_joins.rb', line 6

def left_outer_joins_values
  @values[:left_outer_joins] || []
end

#left_outer_joins_values=(values) ⇒ Object

Raises:

  • (ImmutableRelation)


10
11
12
13
# File 'lib/active_scaffold/extensions/left_outer_joins.rb', line 10

def left_outer_joins_values=(values)
  raise ImmutableRelation if @loaded
  @values[:left_outer_joins] = values
end

#outer_joins(*args) ⇒ Object



21
22
23
24
# File 'lib/active_scaffold/extensions/left_outer_joins.rb', line 21

def outer_joins(*args)
  ActiveSupport::Deprecation.warn 'use left_outer_joins or left_joins which is added to Rails 5.0.0'
  left_outer_joins(*args)
end

#outer_joins!(*args) ⇒ Object



33
34
35
36
# File 'lib/active_scaffold/extensions/left_outer_joins.rb', line 33

def outer_joins!(*args)
  ActiveSupport::Deprecation.warn 'use left_outer_joins! or left_joins! which is added to Rails 5.0.0'
  left_outer_joins!(*args)
end