Skip to content

Commit c415502

Browse files
authored
Merge pull request rails#52983 from fatkodima/validate-uniqueness-with-singleton-class
Fix uniqueness validations defined on singleton classes
2 parents 9716991 + e35b907 commit c415502

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

activerecord/lib/active_record/validations/uniqueness.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ def initialize(options)
1414
end
1515
super
1616
@klass = options[:class]
17+
@klass = @klass.superclass if @klass.singleton_class?
1718
end
1819

1920
def validate_each(record, attribute, value)

activerecord/test/cases/validations/uniqueness_validation_test.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,16 @@ def test_validate_uniqueness
106106
assert t2.save, "Should now save t2 as unique"
107107
end
108108

109+
def test_validate_uniqueness_with_singleton_class
110+
Topic.create!(title: "abc")
111+
t2 = Topic.new(title: "abc")
112+
t2.singleton_class.validates(:title, uniqueness: true)
113+
assert_not_predicate t2, :valid?
114+
115+
t3 = Topic.new(title: "abc")
116+
assert_predicate t3, :valid?
117+
end
118+
109119
def test_validate_uniqueness_with_alias_attribute
110120
Topic.alias_attribute :new_title, :title
111121
Topic.validates_uniqueness_of(:new_title)

0 commit comments

Comments
 (0)