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