Current Rails is extremely strict about what an attribute-specific error message looks like. A human-readable attribute name is always the first word(s) of the sentence, and a developer is only able to customize the sentence fragment after this word.
This makes it difficult to localize error messages to non-English languages, and many error messages end up sounding more kludgey than they could because of the "first word being an attribute name" restriction.
We're not addressing the entire issue with this patch - the Errors object isn't flexible enough to customize the format, as the only information we can pass per error is an attribute/string message combo.
What we did do is change the format of :message to accept a full sentence with string substitution for the symbol ":attribute". So, instead of
object.errors.add(:first_name, "can't be blank")
you could do
object.errors.add(:first_name, ":attribute can't be blank")
or
object.errors.add(:first_name, "Why are you making your :attribute blank?")
or
object.errors.add(:first_name, "People who don't change their name prefix are bad people.")
The :message parameter in validations work similarly. All default messages yield the same sentences as before.