Method: Assertion::DSL::Builder#guards

Defined in:
lib/assertion/dsl/builder.rb

#guards(attribute = nil, &block) ⇒ Class

Builds the subclass of Assertion::Guard with given attribute (alias for the object) and implementation of the #state method.

Examples:

VoterOnly = Assertion.guards :user do
  IsAdult[user.attributes] & IsCitizen[user.attributes]
end

# This is the same as:
class VoterOnly < Assertion::Guard
  alias_method :user, :object

  def state
    IsAdult[user.attributes] & IsCitizen[user.attributes]
  end
end

Parameters:

  • attribute (Symbol) (defaults to: nil)

    The alias for the object attribute

  • block (Proc)

    The content for the state method

Returns:

  • (Class)

    The specific guard class



63
64
65
# File 'lib/assertion/dsl/builder.rb', line 63

def guards(attribute = nil, &block)
  __build__(Guard, attribute, :state, &block)
end