n00*_*00b 6 ruby ruby-on-rails heroku ruby-on-rails-3 ruby-on-rails-3.1
在我的rails应用程序(v:3.1)上部署在heroku上我在内存中获得了更多具有相同id的对象.我的heroku控制台日志:
>> Project.find_all_by_id(92).size
=> 2
>> ActiveRecord::Base.connection.execute('select * from projects where id=92').to_a.size
=> 1
Run Code Online (Sandbox Code Playgroud)
这怎么可能?可能是什么问题呢?
解决方案
根据您的 SQL 查询,您的数据库中显然没有重复的条目。
也许您的项目类中的大小或长度方法已被覆盖。我尝试过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
Run Code Online (Sandbox Code Playgroud)
暗示
如果你想计算记录,你应该这样做
Script.where(id: 1).size
(0.8ms) SELECT COUNT(*) FROM "scripts" WHERE "scripts"."id" = 1
=> 1
Run Code Online (Sandbox Code Playgroud)
因为,正如您所看到的,计数是由您的数据库执行的,而不是由 ruby 本身执行的。对于十几行,你不会看到差异,但如果你有数千或数百万......
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |