¿Más objetos en la memoria con la misma identificación?
-
25-10-2019 - |
Pregunta
En mi aplicación Rails (V: 3.1) desplegada en Heroku, estoy obteniendo más objetos de la misma identificación en la memoria. mi registro de consola de Heroku:
>> Project.find_all_by_id(92).size
=> 2
>> ActiveRecord::Base.connection.execute('select * from projects where id=92').to_a.size
=> 1
¿Cómo es esto posible? ¿Cual podría ser el problema?
Solución
Solución
Aparentemente no hay entrada duplicada en su base de datos de acuerdo con su consulta SQL.
Quizás Talla o longitud El método en su proyecto de clase ha sido anulado. Yo he tratado find_all_by_id Y la consulta SQL parece ser correcta.
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
Insinuación
Si desea contar registros, debe hacerlo de esta manera
Script.where(id: 1).size
(0.8ms) SELECT COUNT(*) FROM "scripts" WHERE "scripts"."id" = 1
=> 1
Porque, como puedes ver, El recuento es realizado por su base de datos y no por Ruby. Para una docena de filas no verá la diferencia, pero si tiene miles o millones ...
Otros consejos
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
Será mejor que busque un documento de búsqueda sobre mysql :: resultado primero