Looks like this is the canonical way to do custom errors (from RailsGuides):
http://guides.rubyonrails.org/active_record_validations_callbacks.html#custom-methods

I'm surprised as well.