thoughtbot/shoulda-matchers · error · VerbNotDefinedError

You must specify an HTTP verb when using a non-RESTful actio

Error message

You must specify an HTTP verb when using a non-RESTful action. For example: for(:authorize, verb: :post)

What it means

Error "You must specify an HTTP verb when using a non-RESTful action. For example: for(:authorize, verb: :post)" thrown in thoughtbot/shoulda-matchers.

Source

Thrown at lib/shoulda/matchers/action_controller/permit_matcher.rb:325

                { for: subparameter_name }
              else
                {}
              end
            parameters_double_registry.permitted_parameter_names(options)
          end
        end

        def unpermitted_parameter_names
          expected_permitted_parameter_names - actual_permitted_parameter_names
        end

        def ensure_action_and_verb_present!
          if action.blank?
            raise ActionNotDefinedError
          end

          if verb.blank?
            raise VerbNotDefinedError
          end
        end

        def default_verb
          case action
          when :create then :post
          when :update then RailsShim.verb_for_update
          end
        end

        def parameter_names_as_sentence
          expected_permitted_parameter_names.map(&:inspect).to_sentence
        end

        # @private
        class CompositeParametersDoubleRegistry
          def initialize
            @parameters_double_registries = []

View on GitHub (pinned to 79cdfbc326)

When it happens

Trigger: Thrown at lib/shoulda/matchers/action_controller/permit_matcher.rb:325 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of thoughtbot/shoulda-matchers@79cdfbc326 (2026-08-23). Data as JSON: /api/errors/31f938020dd8cf9b. Report an issue: GitHub.