app/models/concerns/counter/recalculatable.rb in counterwise-0.1.3 vs app/models/concerns/counter/recalculatable.rb in counterwise-0.1.4

- old
+ new

@@ -7,10 +7,18 @@ elsif definition.manual? raise Counter::Error.new("Can't recalculate a manual counter") else with_lock do new_value = definition.sum? ? sum_by_sql : count_by_sql - update! value: new_value + + self.class.upsert( + attributes.without("id", "created_at", "updated_at").symbolize_keys.merge(value: new_value), + unique_by: [:parent_type, :parent_id, :name], + on_duplicate: Arel.sql("value = counter_values.value + EXCLUDED.value"), + record_timestamps: true + ) + + reload end end end def count_by_sql