module Datamappify::Repository::QueryMethod::Callbacks
Public Class Methods
included(klass)
click to toggle source
# File lib/datamappify/repository/query_method/callbacks.rb, line 7 def self.included(klass) klass.class_eval do include Hooks define_hooks :before_create, :after_create, :before_update, :after_update, :before_save, :after_save, :before_destroy, :after_destroy, :halts_on_falsey => true end end
Public Instance Methods
run_callbacks(entity, *types, &block)
click to toggle source
@param entity [Entity]
@param types [Symbol]
e.g. :create, :update, :save or :destroy
@yield callback
@return [void]
# File lib/datamappify/repository/query_method/callbacks.rb, line 27 def run_callbacks(entity, *types, &block) run_hooks(types, :before, entity) && (yield_value = block.call) && run_hooks(types.reverse, :after, entity) && yield_value end
Private Instance Methods
hook_for(type, filter)
click to toggle source
@param type [Symbol]
e.g. :create, :update, :save or :destroy
@param filter [Symbol]
e.g. :before or :after
@return [Symbol]
# File lib/datamappify/repository/query_method/callbacks.rb, line 58 def hook_for(type, filter) :"#{filter}_#{type}" end
run_hooks(types, filter, entity)
click to toggle source
@param types [Array<Symbol]
an array of types (e.g. :create, :update, :save or :destroy)
@param filter [Symbol]
e.g. :before or :after
@param entity [Entity]
@return [Boolean]
# File lib/datamappify/repository/query_method/callbacks.rb, line 45 def run_hooks(types, filter, entity) types.take_while do |type| run_hook(hook_for(type, filter), entity).not_halted? end.length == types.length end