# STI and validates\_uniqueness

**URL:** <https://www.ruby-forum.com/t/sti-and-validates-uniqueness/92496>\
**Category:** Rails\
**Created:** [April 20, 2007, 1:02am UTC](https://www.ruby-forum.com/t/sti-and-validates-uniqueness/92496 "2007-04-20T01:02:43Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![andywatts](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/d78d45/32.png) [@andywatts](https://www.ruby-forum.com/u/andywatts)\
**Post date:** [April 20, 2007, 1:02am UTC](https://www.ruby-forum.com/t/sti-and-validates-uniqueness/92496/1 "2007-04-20T01:02:43Z")

</div>

Hi,

Added STI and it’s messed with my validates\_uniqueness.  
I was hoping a validate\_uniqueness in the base class would validate a  
field regardless of the derived classes…but it seems not to be.

Any ideas how I can enforce the below uniqueness across all inherited  
classes?  
validate\_uniqueness\_of :xyz\_id , :scope =\> “user\_id”

Only thing I can think of is trying before\_saves and before\_updates  
somewhere and including them in each inherited class definition.

Many Thanks  
Andy

---

<div class="post-metadata">

**Author:** ![andywatts](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/d78d45/32.png) [@andywatts](https://www.ruby-forum.com/u/andywatts)\
**Post date:** [April 20, 2007, 3:34am UTC](https://www.ruby-forum.com/t/sti-and-validates-uniqueness/92496/2 "2007-04-20T03:34:24Z")

</div>

Andy W. wrote:

> Added STI and it’s messed with my validates\_uniqueness.  
> I was hoping a validate\_uniqueness in the base class would validate a  
> field regardless of the derived classes…but it seems not to be.
> 
> Any ideas how I can enforce the below uniqueness across all inherited  
> classes?  
> validate\_uniqueness\_of :xyz\_id , :scope =\> “user\_id”

This is an as yet unfixed problem with Active Record

```
 http://dev.rubyonrails.org/ticket/3833
 http://dev.rubyonrails.org/ticket/5303

```

The quick fix I use is to change the following line

1.2.3:  
[http://dev.rubyonrails.org/browser/tags/rel\_1-2-3/activerecord/lib/active\_record/validations.rb#L551](http://dev.rubyonrails.org/browser/tags/rel_1-2-3/activerecord/lib/active_record/validations.rb#L551)  
Trunk:  
[http://dev.rubyonrails.org/browser/trunk/activerecord/lib/active\_record/validations.rb#L613](http://dev.rubyonrails.org/browser/trunk/activerecord/lib/active_record/validations.rb#L613)

removing “record.class”, leaving a plain find.

Mark

–  
We develop, watch us RoR, in numbers too big to ignore.

---

<div class="post-metadata">

**Author:** ![andywatts](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/d78d45/32.png) [@andywatts](https://www.ruby-forum.com/u/andywatts)\
**Post date:** [April 20, 2007, 7:39am UTC](https://www.ruby-forum.com/t/sti-and-validates-uniqueness/92496/3 "2007-04-20T07:39:12Z")

</div>

ThankYou! Will give this a go.
