Module: Journaled::RelationChangeProtection

Defined in:
lib/journaled/relation_change_protection.rb

Instance Method Summary collapse

Instance Method Details

#delete_all(force: false) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/journaled/relation_change_protection.rb', line 17

def delete_all(force: false)
  if force || !@klass.respond_to?(:journaled_attribute_names) || @klass.journaled_attribute_names.empty?
    super()
  else
    raise("      #delete_all aborted by Journaled::Changes.\n\n      Call .destroy_all instead to ensure journaling or invoke .delete_all(force: true)\n      to override and skip journaling.\n    ERROR\n  end\nend\n")

#update_all(updates, force: false) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/journaled/relation_change_protection.rb', line 2

def update_all(updates, force: false)
  unless force || !@klass.respond_to?(:journaled_attribute_names) || @klass.journaled_attribute_names.empty?
    conflicting_journaled_attribute_names = @klass.journaled_attribute_names & updates.keys.map(&:to_sym)
    raise("      .update_all aborted by Journaled::Changes due to journaled attributes:\n\n        \#{conflicting_journaled_attribute_names.join(', ')}\n\n      Consider using .all(lock: true) or .find_each with #update to ensure journaling or invoke\n       .update_all with additional arg `{ force: true }` to override and skip journaling.\n    ERROR\n  end\n  super(updates)\nend\n") if conflicting_journaled_attribute_names.present?