Find_by_sql not as cool as AR?

I need to do a few custom SQL join’s

so was mucking around in the console

AR stuff works fine when trying to access the instance.id

@tile = Tile.find(:first, :conditions => ["id = ? ", 10 ])

@tile.id
=> 10

but doing a custom SQL query I get this when trying to look at
instance.id

@tile = Tile.find_by_sql("select id, blog_name FROM tiles WHERE tiles.id

10")

@tile.id
(irb):85: warning: Object#id will be deprecated; use Object#object_id
=> 29652588

I have seen a few posts which say to do stuff like to access the object
id
instead of the ruby id

class << ActiveRecord
alias “id__”, “id”
end

but this seems uncool to me

can anyone (DHH) explain whats going on here???

cheers heaps

dion

www.blogsaic.com
search, post, blog

@tile = Tile.find_by_sql (“select id, blog_name FROM tiles WHERE tiles.id =
10”)

@tile.id
(irb):85: warning: Object#id will be deprecated; use Object#object_id
=> 29652588

I’m guessing that @tile is an array. You probably want this instead:

@tile = Tile.find_by_sql ("select id, blog_name FROM tiles WHERE
tiles.id =

10").first

If you need help, just do something like this:

@tile.class

That’ll tell you what you’re dealing with.


Rick O.
http://weblog.techno-weenie.net
http://mephistoblog.com

find_by_sql returns an array, as it works like find(:all)

if you were to do @tile.class you would get Array

Chris

sorry about that

I was being a dick

I was using some code from my pagination stuff

and fogot to loop through the array like I normally do

<% for row in @tiles %>

cheers

On 9/12/06, Chris H. [email protected] wrote:

www.blogsaic.com
search, post, blog