lib/sn_foil/contexts/update_context.rb in snfoil-0.6 vs lib/sn_foil/contexts/update_context.rb in snfoil-0.7.0

- old
+ new

@@ -54,22 +54,23 @@ def setup_update_object(params: {}, id: nil, object: nil, **options) raise ArgumentError, 'one of the following keywords is required: id, object' unless id || object object = wrap_object(object || scope.resolve.find(id)) - authorize(object, :update?, **options) + authorize(object, options.fetch(:authorize) { :update? }, **options) + object.attributes = params options.merge! object: object end def update(**options) options[:action] = :update options = before_setup_update_object(**options) options = setup_update_object(**options) - authorize(options[:object], :update?, **options) + authorize(options[:object], options.fetch(:authorize) { :update? }, **options) options = update_hooks(**options) - unwrap_object(options[:object]) + options[:object] end def setup_update(**options) options end @@ -111,16 +112,16 @@ end private def before_setup_update_object(**options) - options = setup_update(**options) - options = setup_update_hooks.reduce(options) { |opts, hook| run_hook(hook, opts) } + options = setup(**options) + options = setup_hooks.reduce(options) { |opts, hook| run_hook(hook, opts) } options = setup_change(**options) options = setup_change_hooks.reduce(options) { |opts, hook| run_hook(hook, opts) } - options = setup(**options) - setup_hooks.reduce(options) { |opts, hook| run_hook(hook, opts) } + options = setup_update(**options) + setup_update_hooks.reduce(options) { |opts, hook| run_hook(hook, opts) } end # This method is private to help protect the order of execution of hooks def update_hooks(options) options = before_update_save(options) @@ -133,34 +134,34 @@ end after_update_save(options) end def before_update_save(options) - options = before_update(**options) - options = before_update_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } options = before_change(**options) - before_change_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } + options = before_change_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } + options = before_update(**options) + before_update_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } end def after_update_save(options) - options = after_update(**options) - options = after_update_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } options = after_change(**options) - after_change_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } + options = after_change_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } + options = after_update(**options) + after_update_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } end def after_update_save_success(options) - options = after_update_success(**options) - options = after_update_success_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } options = after_change_success(**options) - after_change_success_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } + options = after_change_success_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } + options = after_update_success(**options) + after_update_success_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } end def after_update_save_failure(options) - options = after_update_failure(**options) - options = after_update_failure_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } options = after_change_failure(**options) - after_change_failure_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } + options = after_change_failure_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } + options = after_update_failure(**options) + after_update_failure_hooks.reduce(options) { |opts, hook| run_hook(hook, **opts) } end end end end