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.