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?

¿Fue útil?

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top