Module: StatusManager::StatusUpdateCallback

Defined in:
lib/status-manager/status_update_callback.rb

Instance Method Summary collapse

Instance Method Details

#after_status_update(attribute_name, status_way, &block) ⇒ Object



3
4
5
6
7
# File 'lib/status-manager/status_update_callback.rb', line 3

def after_status_update(attribute_name, status_way, &block)
  self.after_update do |obj|
    self.class.send(:status_update_callback, obj, attribute_name, status_way, &block)
  end
end

#before_status_update(attribute_name, status_way, &block) ⇒ Object



9
10
11
12
13
# File 'lib/status-manager/status_update_callback.rb', line 9

def before_status_update(attribute_name, status_way, &block)
  self.before_update do |obj|
    self.class.send(:status_update_callback, obj, attribute_name, status_way, &block)
  end
end

#status_update_callback(obj, attribute_name, status_way, &block) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/status-manager/status_update_callback.rb', line 15

def status_update_callback(obj, attribute_name, status_way, &block)
  if obj.send("#{attribute_name}_changed?") 
    if status_way.instance_of?(Hash)
      if obj.send("#{attribute_name}_changed?", {:from => status_way.first[0], :to => status_way.first[1]})
        block.call(obj)
      end
    elsif status_way.class == Symbol
      if obj.send("#{attribute_name}_#{status_way}?")
        block.call(obj)
      end
    end
  end
end