Weitere Objekte im Speicher mit derselben ID?
-
25-10-2019 - |
Frage
In meiner Rails -App (v: 3.1) erhalte ich mehr Objekte derselben ID im Speicher. Mein Heroku -Konsolenprotokoll:
>> Project.find_all_by_id(92).size
=> 2
>> ActiveRecord::Base.connection.execute('select * from projects where id=92').to_a.size
=> 1
Wie ist das möglich? Was könnte das Problem sein?
Lösung
Lösung
Es gibt anscheinend keinen doppelten Eintrag in Ihrer Datenbank gemäß Ihrer SQL -Abfrage.
Vielleicht Größe oder Länge Die Methode in Ihrem Klassenprojekt wurde überschrieben. Ich habe versucht find_all_by_id Und die SQL -Abfrage scheint korrekt zu sein.
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
Hinweis
Wenn Sie Datensätze zählen möchten, sollten Sie dies auf diese Weise tun
Script.where(id: 1).size
(0.8ms) SELECT COUNT(*) FROM "scripts" WHERE "scripts"."id" = 1
=> 1
Weil, wie Sie sehen können, Die Anzahl wird von Ihrer Datenbank durchgeführt und nicht von Ruby selbst. Für ein Dutzend Zeilen werden Sie den Unterschied nicht sehen, aber wenn Sie Tausende oder Millionen haben ...
Andere Tipps
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
Sie sollten zuerst ein besseres Suchdokument über MySQL :: Ergebnis finden