Più oggetti in memoria con lo stesso id?
-
25-10-2019 - |
Domanda
Nella mia applicazione Rails (v: 3.1) distribuito su Heroku io sono sempre più oggetti dello stesso id in memoria. il mio log della console Heroku:
>> Project.find_all_by_id(92).size
=> 2
>> ActiveRecord::Base.connection.execute('select * from projects where id=92').to_a.size
=> 1
Come è possibile? Quale potrebbe essere il problema?
Soluzione
Soluzione
Non v'è entrata a quanto pare non duplicata nel database in base alla query SQL.
Forse dimensione o lunghezza metodo nella classe del progetto è stato ignorato. Ho cercato find_all_by_id e la query SQL sembra essere corretta.
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
Suggerimento
Se si desidera contare record si dovrebbe fare in questo modo
Script.where(id: 1).size
(0.8ms) SELECT COUNT(*) FROM "scripts" WHERE "scripts"."id" = 1
=> 1
Perché, come si può vedere, il conteggio viene eseguito dal database e non da Ruby stessa. Per una decina di righe non si vedrà la differenza, ma se si dispone di migliaia o milioni ...
Altri suggerimenti
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
faresti meglio documento di ricerca su MySQL :: Risultato prima