diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2019-03-11 21:47:38 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-11 21:47:38 -0400 |
commit | f2cd46bd043820aa732203ab6c6a54f37062aad1 (patch) | |
tree | a24548bad1ddd80b3893a52d1d4163f2d438a6d2 /activemodel/lib | |
parent | 96242410a8ce8d2de60483002ac20526f3f64c90 (diff) | |
parent | 9ccc5e104287e45b21e4129991b1e507aa1a7dff (diff) | |
download | rails-f2cd46bd043820aa732203ab6c6a54f37062aad1.tar.gz rails-f2cd46bd043820aa732203ab6c6a54f37062aad1.tar.bz2 rails-f2cd46bd043820aa732203ab6c6a54f37062aad1.zip |
Merge pull request #35424 from Korri/validation-rules-locale-fallback
Fall back to parent locale before falling back to the :errors namespace
Diffstat (limited to 'activemodel/lib')
-rw-r--r-- | activemodel/lib/active_model/errors.rb | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/activemodel/lib/active_model/errors.rb b/activemodel/lib/active_model/errors.rb index 9fd6f2d89c..d7e682d406 100644 --- a/activemodel/lib/active_model/errors.rb +++ b/activemodel/lib/active_model/errors.rb @@ -479,6 +479,14 @@ module ActiveModel # * <tt>errors.messages.blank</tt> def generate_message(attribute, type = :invalid, options = {}) type = options.delete(:message) if options[:message].is_a?(Symbol) + value = (attribute != :base ? @base.send(:read_attribute_for_validation, attribute) : nil) + + options = { + model: @base.model_name.human, + attribute: @base.class.human_attribute_name(attribute), + value: value, + object: @base + }.merge!(options) if @base.class.respond_to?(:i18n_scope) i18n_scope = @base.class.i18n_scope.to_s @@ -487,6 +495,11 @@ module ActiveModel :"#{i18n_scope}.errors.models.#{klass.model_name.i18n_key}.#{type}" ] end defaults << :"#{i18n_scope}.errors.messages.#{type}" + + catch(:exception) do + translation = I18n.translate(defaults.first, options.merge(default: defaults.drop(1), throw: true)) + return translation unless translation.nil? + end unless options[:message] else defaults = [] end @@ -496,15 +509,7 @@ module ActiveModel key = defaults.shift defaults = options.delete(:message) if options[:message] - value = (attribute != :base ? @base.send(:read_attribute_for_validation, attribute) : nil) - - options = { - default: defaults, - model: @base.model_name.human, - attribute: @base.class.human_attribute_name(attribute), - value: value, - object: @base - }.merge!(options) + options[:default] = defaults I18n.translate(key, options) end |