aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2016-03-25 13:24:41 +0100
committerKasper Timm Hansen <kaspth@gmail.com>2016-03-25 13:24:41 +0100
commit044baef10136f81a535efdcb6110ef872b04d02a (patch)
tree718aae5bacdafd72ad12f33c7af2fca581aaaea5 /activemodel
parent9ec8113541ad9cbabdd1f969b69f1d1950c1228e (diff)
parent9848c4632f0a9be19bf8cb9b8aaa146e28602e30 (diff)
downloadrails-044baef10136f81a535efdcb6110ef872b04d02a.tar.gz
rails-044baef10136f81a535efdcb6110ef872b04d02a.tar.bz2
rails-044baef10136f81a535efdcb6110ef872b04d02a.zip
Merge pull request #24299 from kitop/activemodel-errors-include-fix
Do not create a hash key when calling ActiveModel::Errors#include?
Diffstat (limited to 'activemodel')
-rw-r--r--activemodel/lib/active_model/errors.rb2
-rw-r--r--activemodel/test/cases/errors_test.rb7
2 files changed, 8 insertions, 1 deletions
diff --git a/activemodel/lib/active_model/errors.rb b/activemodel/lib/active_model/errors.rb
index 36834bbd36..836201535f 100644
--- a/activemodel/lib/active_model/errors.rb
+++ b/activemodel/lib/active_model/errors.rb
@@ -110,7 +110,7 @@ module ActiveModel
# person.errors.include?(:name) # => true
# person.errors.include?(:age) # => false
def include?(attribute)
- messages[attribute].present?
+ messages.key?(attribute) && messages[attribute].present?
end
alias :has_key? :include?
alias :key? :include?
diff --git a/activemodel/test/cases/errors_test.rb b/activemodel/test/cases/errors_test.rb
index a5ac055033..26ba6ba4fb 100644
--- a/activemodel/test/cases/errors_test.rb
+++ b/activemodel/test/cases/errors_test.rb
@@ -128,6 +128,13 @@ class ErrorsTest < ActiveModel::TestCase
assert !person.errors.include?(:foo)
end
+ test "include? does not add a key to messages hash" do
+ person = Person.new
+ person.errors.include?(:foo)
+
+ assert_not person.errors.messages.key?(:foo)
+ end
+
test "adding errors using conditionals with Person#validate!" do
person = Person.new
person.validate!