Ich bin sicher, das ist gewöhnliche Rails Verhalten, und ich vermisse etwas Grundlegendes, aber was ist das?Schienen: Child Record nicht verfolgen Änderungen in Parent
Ein Kind gehört einem Elternteil, ein Elternteil hat viele Mitglieder.
parent = Parent.create(:name=>"Kerkhoff, J")
child = parent.children.create(:first_name => "Sally")
puts child.parent.name # ==> Kerkhoff, J
parent.update_attributes(:name=>'Zorro, A')
puts parent.name # ==> 'Zorro, A'
puts child.parent.name # ==> 'Kerkhoff, J'
child.save # ==> true (Does saving the child refresh its parent.name?)
puts child.parent.name # ==> 'Kerkhoff, J' (No)
child = Child.find(child.id) # reload child from database
puts child.parent.name # ==> 'Zorro, A' (This does refresh the name)
Obwohl das name
Attribut parent
geändert wurde, und obwohl child
auf den gleichen Eltern beziehen weiterhin, ist es nicht der Eltern aktualisiert Attribut widerspiegeln. Es ist auch keine Frage von update_attributes
. Wenn Sallys Datensatz (child
) erneut aus der Datenbank abgerufen wird, gibt das name
-Attribut den neuen Wert parent
wieder.
Was geht hier vor?
Vielen Dank für Ihre Einsicht!
Inside Scoop: Rails 3.1 wird wahrscheinlich eine [Objektkarte] (https://github.com/rails/rails/pull/76) haben. – iain
Danke für die Info. –