# Find Composite Primary Keys

**URL:** <https://www.ruby-forum.com/t/find-composite-primary-keys/171528>\
**Category:** Rails\
**Created:** [July 4, 2009, 5:06am UTC](https://www.ruby-forum.com/t/find-composite-primary-keys/171528 "2009-07-04T05:06:47Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Learn\_by\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e274bd/32.png) [@Learn\_by\_D](https://www.ruby-forum.com/u/Learn_by_D)\
**Post date:** [July 4, 2009, 5:06am UTC](https://www.ruby-forum.com/t/find-composite-primary-keys/171528/1 "2009-07-04T05:06:47Z")

</div>

I have a problem running find using composite primary keys. I have the  
following models:

Code : - fold - unfold

1. class Stat \< ActiveRecord::Base
2. set\_primary\_keys :user\_id, :score\_aspect
3. belongs\_to :user

Code : - fold - unfold

1. class User \< ActiveRecord::Base
2. has\_many :stats

Stat.find runs fine when it can find a stat. But it returns error  
instead of “nil”, when it cannot find a stat.

Code : - fold - unfold

1. 

> > Stat.find(user, “valid\_aspect”)

2. =\> #\<Stat id: 335580687, user\_id: 1000, score\_aspect:  
“valid\_aspect” . . .\>
3. 
4. 
5. 

> > Stat.find(user, “dfsdf”)

6. ActiveRecord::RecordNotFound: Couldn’t find all Stats with IDs  
([[#\<User id: 1000, . . . “dfsdf”]])`stats`.`user_id`=1000 AND  
`stats`.`score_aspect`=‘dfsdf’
7. from  
/opt/local/lib/ruby/gems/1.8/gems/composite\_primary\_keys-2.2.2/lib/composite\_primary\_keys/base.rb:296:in  
`find\_from\_ids’
8. from  
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active\_record/base.rb:616:in  
`find’
9. from (irb):41

I am using [http://compositekeys.rubyforge.org/](http://compositekeys.rubyforge.org/) . Please help. Thanks.  
Developing with Rails 2.3.2; Ruby 1.8.7 (2009-04-08 patchlevel 160)  
[powerpc-darwin9]

---

<div class="post-metadata">

**Author:** ![Learn\_by\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e274bd/32.png) [@Learn\_by\_D](https://www.ruby-forum.com/u/Learn_by_D)\
**Post date:** [July 4, 2009, 10:15am UTC](https://www.ruby-forum.com/t/find-composite-primary-keys/171528/2 "2009-07-04T10:15:25Z")

</div>

Quoting Learn by Doing [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Code : - fold - unfold
> 
> 1. class User \< ActiveRecord::Base
> 2. has\_many :stats
> 
> Stat.find runs fine when it can find a stat. But it returns error  
> instead of “nil”, when it cannot find a stat.

This is normal behavior, when calling find with a non-existant primary  
key, it  
throws an exception, ActiveRecord::RecordNotFound. Try it on one of  
your  
other classes, e.g., User.find(99999999).

HTH,  
Jeffrey

---

<div class="post-metadata">

**Author:** ![Learn\_by\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e274bd/32.png) [@Learn\_by\_D](https://www.ruby-forum.com/u/Learn_by_D)\
**Post date:** [July 4, 2009, 11:23pm UTC](https://www.ruby-forum.com/t/find-composite-primary-keys/171528/3 "2009-07-04T23:23:45Z")

</div>

Jeffrey,

Thank you for the enlightenment!

Happy Independence Day!
