Ich fange an, von Rails 4.1.4 auf Rails 4.2.0 zu aktualisieren. Es sieht zuerst aus! wird bei einigen aktiven Datensatzzuordnungen nicht mehr unterstützt."zuerst!" auf AR CollectionProxy löst nach der Aktualisierung von Rails 4.1.4 auf 4.2.0 "undefined method [] für nil" aus
Was ist mit first!
(auf ActiveRecord :: Associations :: CollectionProxy) passiert, damit es jetzt fehlschlägt?
Wie kann das Verhalten behoben werden, so funktioniert es wie in 4.1.4?
Rails 4.1:
(byebug) user.organization.registration_codes
#<ActiveRecord::Associations::CollectionProxy [#<RegistrationCode id: 259, code: "AWESOMESAUCE" ... >]>
(byebug) user.organization.registration_codes.first!
#<RegistrationCode id: 259, code: "AWESOMESAUCE" ... >
Rails 4.2:
(byebug) user.organization.registration_codes
#<ActiveRecord::Associations::CollectionProxy [#<RegistrationCode id: 259, code: "AWESOMESAUCE" ... >]>
(byebug) user.organization.registration_codes.first!
NoMethodError Exception: undefined method `[]' for nil:NilClass
nil
Aktualisiert
Graben in Active, finde ich es hier versagt:
def find_nth(index, offset)
if loaded?
@records[index]
else
offset += index
@offsets[offset] ||= find_nth_with_limit(offset, 1).first
end
end
loaded?
gibt true zurück, aber @records ist null. Einen Debugger zu werfen und find_nth_with_limit(offset, 1).first
aufzurufen gibt den Rekord, den ich erwarte, zurück.
first!
ist defined in finder_methods.rb in active record das Problem scheint zu sein, dass der Verein seine geladene denkt, aber @records ist gleich Null
zuerst! scheint nicht veraltet zu sein. – Doon
wo ist 'first!' Definiert? Wie kann ich es in keiner Dokumentation oder Quelle finden? – engineersmnky
Es ist als Teil der aktiven Datensatzfinder definiert, scheint aber nicht mehr auf dem Sammelproxy definiert zu sein. – Doon