Input is an array of zone objects - hashes with
name and other fields. Zone itself must match certain schema but i want to check if all required zones were passed.
REQUIRED_ZONES = ["name", "date", "number"] ZonesArraySchema = Dry::Validation.Schema do configure do def includes_required_zones?(zones) filled_zones = zones.pluck(:name) & REQUIRED_ZONES filled_zones.sort == REQUIRED_ZONES.sort end end includes_required_zones? # Perform it on array itself each do schema(Schemas::Zone) end end
I could perform this predicate one level up but i want it to be self-contained.