lib/azeroth/options.rb in azeroth-0.6.5 vs lib/azeroth/options.rb in azeroth-0.7.0
- old
+ new
@@ -8,14 +8,19 @@
#
# @see https://www.rubydoc.info/gems/sinclair/1.6.4/Sinclair/Options
# Sinclair::Options
class Options < Sinclair::Options
# Default options
+ #
+ # @api public
+ #
+ # @see Resourceable::ClassMethods#resource_for
DEFAULT_OPTIONS = {
only: %i[create destroy edit index new show update],
except: [],
- decorator: true
+ decorator: true,
+ before_save: nil
}.freeze
with_options DEFAULT_OPTIONS
# Actions to be built
@@ -23,10 +28,23 @@
# @return [Array<Symbol>]
def actions
[only].flatten.map(&:to_sym) - [except].flatten.map(&:to_sym)
end
+ # Returns event dispatcher
+ #
+ # Event dispatcher is responsible for
+ # sending events such as +before_save+
+ # to it's correct calling point
+ #
+ # @return [Jace::Dispatcher]
+ def event_dispatcher(event)
+ Jace::Dispatcher.new(
+ before: try("before_#{event}")
+ )
+ end
+
# @method only
# @api private
#
# filter of only actions to be built
#
@@ -48,7 +66,18 @@
# the class (model_class::Decorator) or
# do not use a decorator at all calling
# model.as_json
#
# @return [Decorator,TrueClass,FalseClass]
+
+ # @method before_save
+ # @api private
+ #
+ # Block or method name to be run before save
+ #
+ # The given method or block will be ran
+ # before committing changes in models
+ # to database
+ #
+ # @return [Symbol,Proc]
end
end