I got a hack. Somewhere in enviornment.rb set a bunch of global
variables with your custom error messages. Then in each model, set the
error message to the global variable.
validates_presence_of :caption, :message => “is a mandatory field”
Don’t add the field name as part of the message because it gets added to the attribute already as errors#each_full [which is what normally gets called IIRC]. Even if you write your own error message handling you’re better off not adding the attribute name and just using errors#each_full. YMMV