Custom predicates

If you want to define custom predicates, you can create a special module that includes default ones along with your custom functions:

module MyPredicates
  include Dry::Logic::Predicates

  def self.future_date?(date)
    date > Date.today
  end
end

Then you can configure it as your default predicates module:

Schema = Dry::Schema.Params do
  config.predicates = MyPredicates

  required(:release_date).value(:date, :future_date?)
end

Notice that you need to provide custom error messages for your own predicates.

Learn more