6

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 heroku registro de la consola:¿Más objetos en la memoria con la misma identificación?

>> 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?

+0

¿También puede publicar las declaraciones SQL que se generan? – rocketscientist

+1

Más diagnósticos que podría publicar que podrían ayudar a limitarlo: 'Project.find_all_by_id (92) .method (: size) .source_location' (¿Ocurrió algo que reemplaza a .size?) Y' Project.find_all_by_id (92) .to_a.size' (¿Funciona cuando no es una asociación?). –

Respuesta

1

Solución

Aparentemente no hay entrada duplicada en su base de datos de acuerdo a su consulta SQL.

Tal vez tamaño o longitud método en su clase El proyecto ha sido anulado. He intentado 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 

Indirecta

Si desea contar registros que debe hacerlo de esta manera

Script.where(id: 1).size 
    (0.8ms) SELECT COUNT(*) FROM "scripts" WHERE "scripts"."id" = 1 
=> 1 

Debido a que, como se puede ver, el recuento se realiza mediante la base de datos y no por el rubí mismo. Para una docena de filas que no verá la diferencia, pero si usted tiene miles o millones ...

+0

Sí, apuesto a que tiene una columna llamada 'tamaño' en su tabla de proyectos, o algún tipo inteligente escribió: 'tamaño de definición; to_do_items.count; fin' o similar. :-) –

+0

@ Irongaze.com Una columna llamada 'tamaño' podría ser una posibilidad ... No lo pensé. :) – basgys

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 

será mejor que el documento de consulta sobre MySQL :: Resultado Primera

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

Cuestiones relacionadas