# Getting the wrong ID field in a join

**URL:** <https://www.ruby-forum.com/t/getting-the-wrong-id-field-in-a-join/49748>\
**Category:** Rails\
**Created:** [December 8, 2005, 11:04am UTC](https://www.ruby-forum.com/t/getting-the-wrong-id-field-in-a-join/49748 "2005-12-08T11:04:42Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![monch1962](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ee59a6/32.png) [@monch1962](https://www.ruby-forum.com/u/monch1962)\
**Post date:** [December 8, 2005, 11:04am UTC](https://www.ruby-forum.com/t/getting-the-wrong-id-field-in-a-join/49748/1 "2005-12-08T11:04:42Z")

</div>

Hello everyone,

I’ve got the following scenario

Controller  
@things = Thing.find\_all  
@thing\_pages, @things = paginate :things, :per\_page =\> 10, :order\_by  
=\> ‘otherthings.otherthingname, thingname’, :joins =\> [’,otherthings  
where things.id = otherthings.thing\_id’]

View  
for thing in @things  
\<%= thing.id %\>  
\<%= thing.thingfield1 %\>

What I’d expect to see is a list of the id fields for records in the  
**things** table; instead I’m seeing a list of the id fields for  
records in the **otherthings** table. However, ‘thing.thingfield1’  
gives exactly what I want - a list of the thingfield1 fields for  
records in the things table.

It seems that the join in the controller code has picked up the id  
field from the otherthings table, rather than the id field from the  
things table. I’ve confirmed that the model definitions for both  
‘things’ and ‘otherthings’ is correct.

Has anyone else encountered this, and/or know of a way around it? I’m  
using this block of code all over the place (with different table  
names) in my app, and it’s working perfectly everywhere except this  
one place.

Thanks in advance

Dave M.

---

<div class="post-metadata">

**Author:** ![monch1962](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ee59a6/32.png) [@monch1962](https://www.ruby-forum.com/u/monch1962)\
**Post date:** [December 8, 2005, 2:01pm UTC](https://www.ruby-forum.com/t/getting-the-wrong-id-field-in-a-join/49748/2 "2005-12-08T14:01:38Z")

</div>

You need to add :select =\> ‘things.\*’ to pagination options. This  
happens because there are more than one columns with name  
‘id’ (things.id and otherthings.id). Which column will prevail is  
quite a gamble without qualification…

izidor

---

<div class="post-metadata">

**Author:** ![monch1962](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ee59a6/32.png) [@monch1962](https://www.ruby-forum.com/u/monch1962)\
**Post date:** [December 8, 2005, 4:17pm UTC](https://www.ruby-forum.com/t/getting-the-wrong-id-field-in-a-join/49748/3 "2005-12-08T16:17:43Z")

</div>

Yes, I encountered it. The id for the second table has the same name  
as the first and thus the first is ovewritten by the second. No  
problem. You use :select=\> and then when you select the id column of  
the second table you change its name like

secondtable.id as ‘foo\_id’

bruce

---

<div class="post-metadata">

**Author:** ![monch1962](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ee59a6/32.png) [@monch1962](https://www.ruby-forum.com/u/monch1962)\
**Post date:** [December 8, 2005, 10:19pm UTC](https://www.ruby-forum.com/t/getting-the-wrong-id-field-in-a-join/49748/4 "2005-12-08T22:19:04Z")

</div>

Thanks guys, that did the trick.

Just curious: how did you track down that solution? The :select  
option isn’t covered in the API at  
[http://rails.rubyonrails.com/classes/ActionController/Pagination.html](http://rails.rubyonrails.com/classes/ActionController/Pagination.html)  
which is where I was looking, so is there another source of info I  
should be searching as well?

Or did you just walk through the code and find the option that way?

Thanks again

Dave M.

---

<div class="post-metadata">

**Author:** ![monch1962](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ee59a6/32.png) [@monch1962](https://www.ruby-forum.com/u/monch1962)\
**Post date:** [December 8, 2005, 10:43pm UTC](https://www.ruby-forum.com/t/getting-the-wrong-id-field-in-a-join/49748/5 "2005-12-08T22:43:49Z")

</div>

Well. I had the same problem, wrote to the list and got an answer  
from David Heinemeier H… Very cool that he should bother to  
answer. So, what goes around comes around. I figured it was my turn  
to be helpful.

bruce
