instance method
full_message
Ruby on Rails 6.0.6
Since v3.2.22.5Signature
full_message(attribute, message)
Returns a full message for a given attribute.
person.errors.full_message(:name, 'is invalid') # => "Name is invalid"
The ‘“%{attribute} %{message}”` error format can be overridden with either
-
activemodel.errors.models.person/contacts/addresses.attributes.street.format -
activemodel.errors.models.person/contacts/addresses.format -
activemodel.errors.models.person.attributes.name.format -
activemodel.errors.models.person.format -
errors.format
Parameters
-
attributereq -
messagereq
Source
# File activemodel/lib/active_model/errors.rb, line 412
def full_message(attribute, message)
return message if attribute == :base
attribute = attribute.to_s
if self.class.i18n_customize_full_message && @base.class.respond_to?(:i18n_scope)
attribute = attribute.remove(/\[\d\]/)
parts = attribute.split(".")
attribute_name = parts.pop
namespace = parts.join("/") unless parts.empty?
attributes_scope = "#{@base.class.i18n_scope}.errors.models"
if namespace
defaults = @base.class.lookup_ancestors.map do |klass|
[
:"#{attributes_scope}.#{klass.model_name.i18n_key}/#{namespace}.attributes.#{attribute_name}.format",
:"#{attributes_scope}.#{klass.model_name.i18n_key}/#{namespace}.format",
]
end
else
defaults = @base.class.lookup_ancestors.map do |klass|
[
:"#{attributes_scope}.#{klass.model_name.i18n_key}.attributes.#{attribute_name}.format",
:"#{attributes_scope}.#{klass.model_name.i18n_key}.format",
]
end
end
defaults.flatten!
else
defaults = []
end
defaults << :"errors.format"
defaults << "%{attribute} %{message}"
attr_name = attribute.tr(".", "_").humanize
attr_name = @base.class.human_attribute_name(attribute, default: attr_name)
I18n.t(defaults.shift,
default: defaults,
attribute: attr_name,
message: message)
end
Defined in activemodel/lib/active_model/errors.rb line 412
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveModel::Errors