My very first #ecto validator.
At first I was kind of repelled by the notion of validators in ecto because, as Alexis King teaches us mere mortals, "parse, not validate".
But then I realised that ecto validators don't discard error / success information (see xor_mark_as_required and xor_insert_errors). So I am content.