Class: ActiveRecord::UpdateCountersWithValues::QueryBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/active_record/update_counters_with_values/query_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(klass) ⇒ QueryBuilder

Returns a new instance of QueryBuilder.



4
5
6
# File 'lib/active_record/update_counters_with_values/query_builder.rb', line 4

def initialize(klass)
  @klass = klass
end

Instance Method Details

#call(id, counters) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/active_record/update_counters_with_values/query_builder.rb', line 7

def call(id, counters)
  updates = build_updates(counters)
  conditions = build_conditions(id)
  returns = build_returns(counters)

  (<<~SQL)
    UPDATE #{@klass.connection.quote_table_name(@klass.table_name)}
    SET
      #{updates}
    WHERE
      #{conditions}
    RETURNING
      #{returns}
  SQL
end