我确定这是普通的 Rails 行为,我缺少一些基本的东西,但它是什么?
一个孩子属于一个父母,一个父母有很多成员。
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)
虽然nameof 的属性parent已经改变,并且虽然child继续引用同一个父级,但它并不反映父级更新后的属性。这也不是update_attributes失败的问题。child如果再次从数据库中检索到Sally 的记录 ( ),则该name属性会反映parent的新值。
这里发生了什么?
感谢您的洞察力!