diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2017-11-06 18:13:37 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-06 18:13:37 -0500 |
commit | 9042ced124874a200b134ec3a4441ab6e2c1be73 (patch) | |
tree | 5e1e5f4f8cb017a689742b741ee1b593a1ce5f07 /activemodel | |
parent | 165d5b601d44495452dcebba5a61b31b3be36da7 (diff) | |
parent | 7308991630af3fb8a2a7e2cde9fd322316153ec2 (diff) | |
download | rails-9042ced124874a200b134ec3a4441ab6e2c1be73.tar.gz rails-9042ced124874a200b134ec3a4441ab6e2c1be73.tar.bz2 rails-9042ced124874a200b134ec3a4441ab6e2c1be73.zip |
Merge pull request #31058 from bogdanvlviv/ConfirmationValidator-with_false_value
Execute `ConfirmationValidator` validation when `_confirmation`'s value is `false`
Diffstat (limited to 'activemodel')
-rw-r--r-- | activemodel/CHANGELOG.md | 4 | ||||
-rw-r--r-- | activemodel/lib/active_model/validations/confirmation.rb | 2 | ||||
-rw-r--r-- | activemodel/test/cases/validations/confirmation_validation_test.rb | 13 |
3 files changed, 18 insertions, 1 deletions
diff --git a/activemodel/CHANGELOG.md b/activemodel/CHANGELOG.md index 82e3a7f4dd..794744c646 100644 --- a/activemodel/CHANGELOG.md +++ b/activemodel/CHANGELOG.md @@ -1,3 +1,7 @@ +* Execute `ConfirmationValidator` validation when `_confirmation`'s value is `false`. + + *bogdanvlviv* + * Allow passing a Proc or Symbol to length validator options. *Matt Rohrer* diff --git a/activemodel/lib/active_model/validations/confirmation.rb b/activemodel/lib/active_model/validations/confirmation.rb index 0abec56b68..1b5d5b09ab 100644 --- a/activemodel/lib/active_model/validations/confirmation.rb +++ b/activemodel/lib/active_model/validations/confirmation.rb @@ -9,7 +9,7 @@ module ActiveModel end def validate_each(record, attribute, value) - if (confirmed = record.send("#{attribute}_confirmation")) + unless (confirmed = record.send("#{attribute}_confirmation")).nil? unless confirmation_value_equal?(record, attribute, value, confirmed) human_attribute_name = record.class.human_attribute_name(attribute) record.errors.add(:"#{attribute}_confirmation", :confirmation, options.except(:case_sensitive).merge!(attribute: human_attribute_name)) diff --git a/activemodel/test/cases/validations/confirmation_validation_test.rb b/activemodel/test/cases/validations/confirmation_validation_test.rb index e84415a868..8b2c65289b 100644 --- a/activemodel/test/cases/validations/confirmation_validation_test.rb +++ b/activemodel/test/cases/validations/confirmation_validation_test.rb @@ -37,6 +37,19 @@ class ConfirmationValidationTest < ActiveModel::TestCase assert t.valid? end + def test_validates_confirmation_of_with_boolean_attribute + Topic.validates_confirmation_of(:approved) + + t = Topic.new(approved: true, approved_confirmation: nil) + assert t.valid? + + t.approved_confirmation = false + assert t.invalid? + + t.approved_confirmation = true + assert t.valid? + end + def test_validates_confirmation_of_for_ruby_class Person.validates_confirmation_of :karma |