在myoku上部署的我的rails应用程序(v:3.1)中,我在内存中获得了更多具有相同id的对象。 我的heroku控制台日志:
>> Project.find_all_by_id(92).size
=> 2
>> ActiveRecord::Base.connection.execute('select * from projects where id=92').to_a.size
=> 1
这怎么可能?可能是什么问题?
答案 0 :(得分:1)
<强>解决方案强>
根据您的SQL查询,您的数据库中显然没有重复的条目。
您的类Project中的大小或长度方法可能已被覆盖。我尝试过 find_all_by_id ,SQL查询似乎是正确的。
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
<强>提示强>
如果你想计算记录,你应该这样做
Script.where(id: 1).size
(0.8ms) SELECT COUNT(*) FROM "scripts" WHERE "scripts"."id" = 1
=> 1
因为,正如您所看到的,计数由您的数据库执行而不是由ruby本身执行。对于十几行你不会看到差异,但如果你有数千或数百万......
答案 1 :(得分:0)
irb(main):023:0> ActiveRecord::Base.connection.execute('select count(*) from users where address_id = 22').fetch_hash
=> {"count(*)"=>"4"}
irb(main):024:0> User.find_all_by_address_id(22).size
=> 4
你最好先找一下关于Mysql :: Result的文件