aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/validations
diff options
context:
space:
mode:
authorDiego Silva <diego.silva@live.com>2016-02-09 20:46:34 -0200
committerDiego Silva <diego.silva@live.com>2016-02-09 21:28:21 -0200
commitf1daa2be5278bee61dfa9a6dc111b556df677ad8 (patch)
treeaeecaa8c6457c3292f5dbefa981606595ae97586 /activerecord/test/cases/validations
parentb5eb2423b6e431ba53e3836d58449e7e810096b4 (diff)
downloadrails-f1daa2be5278bee61dfa9a6dc111b556df677ad8.tar.gz
rails-f1daa2be5278bee61dfa9a6dc111b556df677ad8.tar.bz2
rails-f1daa2be5278bee61dfa9a6dc111b556df677ad8.zip
UniquenessValidator exclude itself when PK changed
When changing the PK for a record which has a uniqueness validation on some other attribute, Active Record should exclude itself from the validation based on the PK value stored on the DB (id_was) instead of its new value (id).
Diffstat (limited to 'activerecord/test/cases/validations')
-rw-r--r--activerecord/test/cases/validations/uniqueness_validation_test.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/activerecord/test/cases/validations/uniqueness_validation_test.rb b/activerecord/test/cases/validations/uniqueness_validation_test.rb
index 7502a55391..e601c53dbf 100644
--- a/activerecord/test/cases/validations/uniqueness_validation_test.rb
+++ b/activerecord/test/cases/validations/uniqueness_validation_test.rb
@@ -469,4 +469,15 @@ class UniquenessValidationTest < ActiveRecord::TestCase
assert_match(/\AUnknown primary key for table dashboards in model/, e.message)
assert_match(/Can not validate uniqueness for persisted record without primary key.\z/, e.message)
end
+
+ def test_validate_uniqueness_ignores_itself_when_primary_key_changed
+ Topic.validates_uniqueness_of(:title)
+
+ t = Topic.new("title" => "This is a unique title")
+ assert t.save, "Should save t as unique"
+
+ t.id += 1
+ assert t.valid?, "Should be valid"
+ assert t.save, "Should still save t as unique"
+ end
end