class ActiveRecord::Error
def generate_message(options = {})
error +message+ for the title +attribute+, it looks for these translations:
hasn't been found. Say you have class Admin < User; end and you wanted the translation for the :blank
When using inheritence in your models, it will check all the inherited models too, but only if the model itself
translated attribute name and the value are available for interpolation.
default message (e.g. activerecord.errors.messages.MESSAGE). The translated model name,
it's looked up in models.MODEL.MESSAGE and if that is not there it returns the translation of the
Error messages are first looked up in models.MODEL.attributes.ATTRIBUTE.MESSAGE, if it's not there,
Translates an error message in it's default scope (activerecord.errrors.messages).
def generate_message(options = {}) keys = @base.class.self_and_descendants_from_active_record.map do |klass| [ :"models.#{klass.name.underscore}.attributes.#{attribute}.#{@message}", :"models.#{klass.name.underscore}.#{@message}" ] end.flatten keys << options.delete(:default) keys << :"messages.#{@message}" keys << @message if @message.is_a?(String) keys << @type unless @type == @message keys.compact! options.merge!(:default => keys) I18n.translate(keys.shift, options) end