Sha256: 7f856fcc7ba3d405fab8dc800e7b70ad035ebd5366d286dfbcc66c0e1adbed78
Contents?: true
Size: 1.33 KB
Versions: 5
Compression:
Stored size: 1.33 KB
Contents
module Signal module ActiveRecord def self.included(base) base.class_eval do include Signal include InstanceMethods around_create :around_create_signal around_save :around_save_signal around_destroy :around_destroy_signal before_validation :before_validation_signal after_validation :after_validation_signal end end module InstanceMethods private def around_create_signal emit_signal(:before, :create, self) yield return unless persisted? emit_signal(:on, :create, self) emit_signal(:after, :create, self) end def around_save_signal if new_record? yield return end emit_signal(:before, :update, self) yield emit_signal(:on, :update, self) emit_signal(:after, :update, self) end def around_destroy_signal emit_signal(:before, :remove, self) yield emit_signal(:on, :remove, self) emit_signal(:after, :remove, self) end def before_validation_signal emit_signal(:before, :validation, self) end def after_validation_signal emit_signal(:on, :validation, self) if errors.any? emit_signal(:after, :validation, self) end end end end
Version data entries
5 entries across 5 versions & 1 rubygems