class Copyable::ModelHooks
Attributes
all_callbacks_disabled[R]
Public Class Methods
disable!(klass)
click to toggle source
Disabling callbacks automatically disables any registered observers, since observers use the callback mechanism internally.
# File lib/copyable/model_hooks.rb, line 7 def self.disable!(klass) disable_all_callbacks(klass) end
reenable!(klass)
click to toggle source
# File lib/copyable/model_hooks.rb, line 11 def self.reenable!(klass) reenable_all_callbacks(klass) end
Private Class Methods
disable_all_callbacks(klass)
click to toggle source
# File lib/copyable/model_hooks.rb, line 17 def self.disable_all_callbacks(klass) klass.class_eval do return if self.method_defined? :old_save! # Don't do this more than once @all_callbacks_disabled = true class << self attr_reader :all_callbacks_disabled end alias_method :old_save!, :save! # Hold my beer while we bypass all the Rails callbacks # in favor of some raw SQL def save! Copyable::Saver.save!(self) end end end
reenable_all_callbacks(klass)
click to toggle source
# File lib/copyable/model_hooks.rb, line 36 def self.reenable_all_callbacks(klass) klass.class_eval do return unless self.method_defined? :old_save! # Don't do this more than once @all_callbacks_disabled = false class << self attr_reader :all_callbacks_disabled end alias_method :save!, :old_save! remove_method :old_save! end end
Private Instance Methods
save!()
click to toggle source
Hold my beer while we bypass all the Rails callbacks in favor of some raw SQL
# File lib/copyable/model_hooks.rb, line 30 def save! Copyable::Saver.save!(self) end