Вопрос

В моем приложении 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

http://rubydoc.info/gems/mysql/2.8.1/frames

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top