aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2012-05-28 07:08:05 -0700
committerJosé Valim <jose.valim@gmail.com>2012-05-28 07:08:05 -0700
commitf5e26bcb1a9a44b763d4d9ff117705312d1c650f (patch)
tree2e1de9537b20a29e24d0447f7ce5d2175f8cbc9d
parent5acb10d6c359f9b715e5b5a5d26a524581a9ac41 (diff)
parentb3ccd7b27afabacba5f537ef5c428314df25eae3 (diff)
downloadrails-f5e26bcb1a9a44b763d4d9ff117705312d1c650f.tar.gz
rails-f5e26bcb1a9a44b763d4d9ff117705312d1c650f.tar.bz2
rails-f5e26bcb1a9a44b763d4d9ff117705312d1c650f.zip
Merge pull request #6517 from purcell/validates-false-value
Don't enable validations when passing false hash values to ActiveModel.validates
-rw-r--r--activemodel/CHANGELOG.md2
-rw-r--r--activemodel/lib/active_model/validations/validates.rb1
-rw-r--r--activemodel/test/cases/validations_test.rb5
3 files changed, 8 insertions, 0 deletions
diff --git a/activemodel/CHANGELOG.md b/activemodel/CHANGELOG.md
index 789cff0673..eb34edb91b 100644
--- a/activemodel/CHANGELOG.md
+++ b/activemodel/CHANGELOG.md
@@ -1,5 +1,7 @@
## Rails 4.0.0 (unreleased) ##
+* Passing false hash values to `validates` will no longer enable the corresponding validators *Steve Purcell*
+
* `ConfirmationValidator` error messages will attach to `:#{attribute}_confirmation` instead of `attribute` *Brian Cardarella*
* Added ActiveModel::Model, a mixin to make Ruby objects work with AP out of box *Guillermo Iguaran*
diff --git a/activemodel/lib/active_model/validations/validates.rb b/activemodel/lib/active_model/validations/validates.rb
index d94c4e3f4f..6c13d2b4a2 100644
--- a/activemodel/lib/active_model/validations/validates.rb
+++ b/activemodel/lib/active_model/validations/validates.rb
@@ -88,6 +88,7 @@ module ActiveModel
defaults.merge!(:attributes => attributes)
validations.each do |key, options|
+ next unless options
key = "#{key.to_s.camelize}Validator"
begin
diff --git a/activemodel/test/cases/validations_test.rb b/activemodel/test/cases/validations_test.rb
index 1f5023bf76..8ea9745fbf 100644
--- a/activemodel/test/cases/validations_test.rb
+++ b/activemodel/test/cases/validations_test.rb
@@ -330,6 +330,11 @@ class ValidationsTest < ActiveModel::TestCase
end
end
+ def test_validates_with_false_hash_value
+ Topic.validates :title, :presence => false
+ assert Topic.new.valid?
+ end
+
def test_strict_validation_error_message
Topic.validates :title, :strict => true, :presence => true