Module: StatusManager::StatusUpdateCallback
- Defined in:
- lib/status-manager/status_update_callback.rb
Instance Method Summary collapse
- #after_status_update(status_title, status_way, &block) ⇒ Object
- #before_status_update(status_title, status_way, &block) ⇒ Object
- #status_update_callback(obj, status_title, status_way, &block) ⇒ Object
Instance Method Details
#after_status_update(status_title, status_way, &block) ⇒ Object
3 4 5 6 7 |
# File 'lib/status-manager/status_update_callback.rb', line 3 def after_status_update(status_title, status_way, &block) self.after_update do |obj| self.class.send(:status_update_callback, obj, status_title, status_way, &block) end end |
#before_status_update(status_title, status_way, &block) ⇒ Object
9 10 11 12 13 |
# File 'lib/status-manager/status_update_callback.rb', line 9 def before_status_update(status_title, status_way, &block) self.before_update do |obj| self.class.send(:status_update_callback, obj, status_title, status_way, &block) end end |
#status_update_callback(obj, status_title, status_way, &block) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/status-manager/status_update_callback.rb', line 15 def status_update_callback(obj, status_title, status_way, &block) if obj.send("#{status_title}_changed?") if status_way.class == Hash prev_status = status_way.first[0] next_status = status_way.first[1] if obj.send("#{status_title}_was_#{prev_status}?") && obj.send("#{status_title}_#{next_status}?") block.call(obj) end elsif status_way.class == Symbol if obj.send("#{status_title}_#{status_way}?") block.call(obj) end end end end |