diff --git a/lib/granite/action/performing.rb b/lib/granite/action/performing.rb index b66f4d8..5735f47 100644 --- a/lib/granite/action/performing.rb +++ b/lib/granite/action/performing.rb @@ -82,7 +82,8 @@ def try_perform!(context: nil, **options) return unless satisfy_preconditions? transaction do - super_run_validations!(context) || raise_validation_error + # super_run_validations!(context) || raise_validation_error + validate!(context) perform_action!(**options) end end diff --git a/lib/granite/action/preconditions.rb b/lib/granite/action/preconditions.rb index 4ebd2be..fbf2517 100644 --- a/lib/granite/action/preconditions.rb +++ b/lib/granite/action/preconditions.rb @@ -85,6 +85,7 @@ def add_precondition(klass, *args, &block) def initialize(*) @failed_preconditions = [] + @preconditions_run = nil super end @@ -106,7 +107,7 @@ def decline_with(*args, **kwargs) private def run_preconditions! - _preconditions.execute!(self) + @preconditions_run ||= _preconditions.execute!(self) errors.empty? end