Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

More objects in memory with same id?

In my rails app (v: 3.1) deployed on heroku I am getting more objects of same id in memory. my heroku console log:

>> Project.find_all_by_id(92).size
=> 2
>> ActiveRecord::Base.connection.execute('select * from projects where id=92').to_a.size
=> 1

How is this possible? What could be the problem?

like image 321
n00b Avatar asked Jan 10 '12 10:01

n00b


1 Answers

Solution

There is apparently no duplicate entry in your database according to your SQL query.

Maybe size or length method in your class Project has been overridden. I have tried find_all_by_id and the SQL query seems to be correct.

1.9.2-p180 :006 > Script.find_all_by_id(1).size
  Script Load (0.7ms)  SELECT "scripts".* FROM "scripts" WHERE "scripts"."id" = 1
 => 1 

Hint

If you want to count records you should do it this way

Script.where(id: 1).size
  (0.8ms)  SELECT COUNT(*) FROM "scripts" WHERE "scripts"."id" = 1
 => 1 

Because, as you can see, the count is performed by your database and not by ruby itself. For a dozen of rows you won't see the difference, but if you have thousands or millions...

like image 145
basgys Avatar answered Oct 08 '22 17:10

basgys