Больше объектов в памяти с тем же идентификатором?
-
25-10-2019 - |
Вопрос
В моем приложении Rails (V: 3.1) на Heroku я получаю больше объектов того же идентификатора в памяти. мой бревно консоли Heroku:
>> Project.find_all_by_id(92).size
=> 2
>> ActiveRecord::Base.connection.execute('select * from projects where id=92').to_a.size
=> 1
Как это возможно? В чем может быть проблема?
Решение
Решение
По -видимому, в вашей базе данных нет дублирования в вашей базе данных в соответствии с вашим запросом 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
Намекать
Если вы хотите считать записи, вы должны сделать это таким образом
Script.where(id: 1).size
(0.8ms) SELECT COUNT(*) FROM "scripts" WHERE "scripts"."id" = 1
=> 1
Потому что, как вы можете видеть, Подсчет выполняется в вашей базе данных и не сама Руби. Для дюжины рядов вы не увидите разницы, но если у вас есть тысячи или миллионы ...
Другие советы
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 First