Problem using ActiveRecord find with :joins and :select

Hi guys,

When I do:

temp = User.find(:all,                  :joins => "INNER JOIN contents ON users.agent_id = contents.id",                  :select => "contents.id, users.id, users.u_date")

temp.first.inspect

It seems to work fine, but it only returns: #<User id: 6, u_date: "2009-10-03 19:32:23">

but not the contents.id information.

I don't get it, and I don't know what to do to rectify this. It seems like since I call find on User, it only returns infos related to this model. By the way, when I copy the SQL code generated by Rails directly in my DB, it works fine and returns all 3 fields.

Do you have any idea what I am missing?

Thanks a lot! Peter

Hiii Active record → mapping rec on table to object SO… temp.first.inspect → user object

please try… temp.first.content.inspect—> will show contents.id

Note: first you must add relation between model user and model content…

Thank you

Hi guys,

When I do:

temp = User.find(:all, :joins => "INNER JOIN contents ON users.agent_id = contents.id", :select => "contents.id, users.id, users.u_date")

temp.first.inspect

It seems to work fine, but it only returns: #<User id: 6, u_date: "2009-10-03 19:32:23">

but not the contents.id information.

I don't get it, and I don't know what to do to rectify this. It seems like since I call find on User, it only returns infos related to this model. By the way, when I copy the SQL code generated by Rails directly in my DB, it works fine and returns all 3 fields.

Do you have any idea what I am missing?

attributes are stored in a hash, ie there can be only one attribute called id - you need to alias the contents.id attribute. Even when you do that, inspect won't show the extra value, but temp.first.content_id (assuming you alias it as content_id) should return the right id. Lastly, what's the point of the hoin to get contents.id when you know the contents.id == users.agent_id ?

Fred

Thanks a lot guys for clarifying this. It worked with the aliases as you suggested.

Fred, to your last point: sorry about that, you are right. I just made up the example to show the mechanics, I didn't realize it didn't quite make any sense.

Peter