# Validates\_uniqueness\_of fails on STI in Rails 2.3.2

**URL:** <https://www.ruby-forum.com/t/validates-uniqueness-of-fails-on-sti-in-rails-2-3-2/170419>\
**Category:** Rails\
**Created:** [June 17, 2009, 12:42pm UTC](https://www.ruby-forum.com/t/validates-uniqueness-of-fails-on-sti-in-rails-2-3-2/170419 "2009-06-17T12:42:28Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![joachimgross](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/258eb7/32.png) [@joachimgross](https://www.ruby-forum.com/u/joachimgross)\
**Post date:** [June 17, 2009, 12:42pm UTC](https://www.ruby-forum.com/t/validates-uniqueness-of-fails-on-sti-in-rails-2-3-2/170419/1 "2009-06-17T12:42:28Z")

</div>

I’ve got something like this:

class Position \< ActiveRecord::Base  
end

class CartItem \< Position  
validates\_uniqueness\_of :product\_id  
end

When I try to save CartItem I get this error:

ArgumentError: wrong number of arguments (1 for 2)  
from  
/home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active\_record/validations.rb:758:in  
`exists?' from /home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/validations.rb:758:in`validates\_uniqueness\_of’  
from  
/home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active\_record/base.rb:2148:in  
`with_scope' from /home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:2156:in`with\_exclusive\_scope’  
from  
/home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active\_record/validations.rb:757:in  
`validates_uniqueness_of' from /home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/validations.rb:399:in`validates\_each’  
from  
/home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active\_record/validations.rb:396:in  
`each' from /home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/validations.rb:396:in`validates\_each’  
from  
/home/joaz/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active\_support/callbacks.rb:182:in  
`call' from /home/joaz/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active_support/callbacks.rb:182:in`evaluate\_method’  
from  
/home/joaz/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active\_support/callbacks.rb:166:in  
`call' from /home/joaz/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active_support/callbacks.rb:90:in`run’  
from  
/home/joaz/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active\_support/callbacks.rb:90:in  
`each' from /home/joaz/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active_support/callbacks.rb:90:in`send’  
from  
/home/joaz/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active\_support/callbacks.rb:90:in  
`run' from /home/joaz/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active_support/callbacks.rb:276:in`run\_callbacks’  
from  
/home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active\_record/validations.rb:1029:in  
`valid_without_callbacks?' from /home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/callbacks.rb:315:in`valid?’  
from  
/home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active\_record/validations.rb:1008:in  
`save_without_dirty' from /home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/dirty.rb:79:in`save\_without\_transactions’  
from  
/home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active\_record/transactions.rb:229:in  
`send' from /home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/transactions.rb:229:in`with\_transaction\_returning\_status’  
from  
/home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active\_record/connection\_adapters/abstract/database\_statements.rb:136:in  
`transaction' from /home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/transactions.rb:182:in`transaction’  
from  
/home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active\_record/transactions.rb:228:in  
`with_transaction_returning_status' from /home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/transactions.rb:196:in`save’  
from  
/home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active\_record/transactions.rb:208:in  
`rollback_active_record_state!' from /home/joaz/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/active_record/transactions.rb:196:in`save’

Putting validates\_uniqueness\_of in the Position model works fine. It  
doesn’t work in any inherited class. This seems to be a regression issue  
on Rails 2.3, works fine on previous rails versions.

---

<div class="post-metadata">

**Author:** ![joachimgross](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/258eb7/32.png) [@joachimgross](https://www.ruby-forum.com/u/joachimgross)\
**Post date:** [June 17, 2009, 9:17pm UTC](https://www.ruby-forum.com/t/validates-uniqueness-of-fails-on-sti-in-rails-2-3-2/170419/2 "2009-06-17T21:17:19Z")

</div>

What other plugins are you using? Something weird is going on, as the  
code at pointed to by the exception trace calls exists? with one  
argument, which is what it expects.

–Matt J.

On Jun 17, 6:42 am, Joachim G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![joachimgross](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/258eb7/32.png) [@joachimgross](https://www.ruby-forum.com/u/joachimgross)\
**Post date:** [June 18, 2009, 1:53pm UTC](https://www.ruby-forum.com/t/validates-uniqueness-of-fails-on-sti-in-rails-2-3-2/170419/3 "2009-06-18T13:53:41Z")

</div>

Matt J. wrote:

> What other plugins are you using? Something weird is going on, as the  
> code at pointed to by the exception trace calls exists? with one  
> argument, which is what it expects.

gems included in config:  
mislav-will\_paginate  
memcache-client

vendor/plugins (error occours also after renaming the vendor directory)

acts\_as\_acl  
acts\_as\_tree  
better\_nested\_set  
view\_model

In fact, I get the same error on a fresh rails installation.
