Module: CopyMachine::ActiveRecordExtensions::Callbacks
- Defined in:
- lib/copy_machine/active_record_extensions/callbacks.rb
Instance Method Summary collapse
- #callback_methods ⇒ Object
- #override_callback_methods! ⇒ Object
- #remove_callbacks! ⇒ Object
- #resurrect_callback_methods! ⇒ Object
- #resurrect_callbacks! ⇒ Object
- #with_disabled_callbacks ⇒ Object
Instance Method Details
#callback_methods ⇒ Object
21 22 23 24 25 26 27 28 29 30 |
# File 'lib/copy_machine/active_record_extensions/callbacks.rb', line 21 def callback_methods instance_methods.select do |im| [ 'before_save', 'after_save', 'before_create', 'after_create' ].include?(im) end end |
#override_callback_methods! ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/copy_machine/active_record_extensions/callbacks.rb', line 32 def override_callback_methods! callback_methods.each do |m| class_eval <<-METHOD, __FILE__, __LINE__ + 1 def #{m}_with_override; end alias_method_chain #{m}, :override METHOD end end |
#remove_callbacks! ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/copy_machine/active_record_extensions/callbacks.rb', line 11 def remove_callbacks! override_callback_methods! callback_vars = self.instance_variables.select { |var| var =~ /callbacks/ } callback_vars.each do |cb| instance_variable_set("#{cb}_temp".to_sym, instance_variable_get("#{cb}".to_sym)) self.send(:remove_instance_variable, "#{cb}") end end |
#resurrect_callback_methods! ⇒ Object
41 42 43 44 45 |
# File 'lib/copy_machine/active_record_extensions/callbacks.rb', line 41 def resurrect_callback_methods! callback_methods.each do |m| alias_method m, "#{m}_without_override" end end |
#resurrect_callbacks! ⇒ Object
47 48 49 50 51 52 53 54 55 |
# File 'lib/copy_machine/active_record_extensions/callbacks.rb', line 47 def resurrect_callbacks! resurrect_callback_methods! temp_callback_vars = instance_variables.select { |var| var =~ /callbacks_temp/ } temp_callback_vars.each do |tcb| instance_variable_set("#{tcb.gsub("temp", "")}".to_sym, self.instance_variable_get("#{tcb}".to_sym)) send(:remove_instance_variable, "#{tcb}") end end |
#with_disabled_callbacks ⇒ Object
5 6 7 8 9 |
# File 'lib/copy_machine/active_record_extensions/callbacks.rb', line 5 def with_disabled_callbacks remove_callbacks! yield resurrect_callbacks! end |