diff options
author | José Valim <jose.valim@gmail.com> | 2010-08-03 15:22:54 +0200 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-08-03 15:22:54 +0200 |
commit | f23bc8444b1f1193b2f9135474545436be97b195 (patch) | |
tree | 9a5fe0eec217e04884667102746f0cf0726dcfa3 /activemodel | |
parent | 621246f997887eccf61c1737c76b1eefc9217263 (diff) | |
download | rails-f23bc8444b1f1193b2f9135474545436be97b195.tar.gz rails-f23bc8444b1f1193b2f9135474545436be97b195.tar.bz2 rails-f23bc8444b1f1193b2f9135474545436be97b195.zip |
validates_length_of should not change the options hash in place. [#5283 state:resolved]
Diffstat (limited to 'activemodel')
-rw-r--r-- | activemodel/lib/active_model/validations/length.rb | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/activemodel/lib/active_model/validations/length.rb b/activemodel/lib/active_model/validations/length.rb index c8a77ad666..a7af4f2b4d 100644 --- a/activemodel/lib/active_model/validations/length.rb +++ b/activemodel/lib/active_model/validations/length.rb @@ -40,8 +40,6 @@ module ActiveModel CHECKS.each do |key, validity_check| next unless check_value = options[key] - default_message = options[MESSAGES[key]] - options[:message] ||= default_message if default_message valid_value = if key == :maximum value.nil? || value.size.send(validity_check, check_value) @@ -51,8 +49,13 @@ module ActiveModel next if valid_value - record.errors.add(attribute, MESSAGES[key], - options.except(*RESERVED_OPTIONS).merge!(:count => check_value)) + errors_options = options.except(*RESERVED_OPTIONS) + errors_options[:count] = check_value + + default_message = options[MESSAGES[key]] + errors_options[:message] ||= default_message if default_message + + record.errors.add(attribute, MESSAGES[key], errors_options) end end end |