Method: Grape::DSL::Validations::ClassMethods#contract

Defined in:
lib/grape/dsl/validations.rb

#contract(contract = nil) { ... } ⇒ Object

Declare the contract to be used for the endpoint’s parameters.

Parameters:

  • contract (Class<Dry::Validation::Contract> | Dry::Schema::Processor) (defaults to: nil)

    The contract or schema to be used for validation. Optional.

Yields:

  • a block yielding a new instance of Dry::Schema::Params subclass, allowing to define the schema inline. When the contract parameter is a schema, it will be used as a parent. Optional.

Raises:

  • (ArgumentError)


48
49
50
51
52
53
# File 'lib/grape/dsl/validations.rb', line 48

def contract(contract = nil, &block)
  raise ArgumentError, 'Either contract or block must be provided' unless contract || block
  raise ArgumentError, 'Cannot inherit from contract, only schema' if block && contract.respond_to?(:schema)

  Grape::Validations::ContractScope.new(self, contract, &block)
end