如果我有
class Parent < ...
has_many :children,
:before_add => :prepare_baby_room
:after_remove => :plan_holiday
end
class Child < ...
belongs_to :parent
:after_create => :gurgle_a_lot
:after_remove => :cry
end
我希望将一个孩子与一个不同的父母重新关联,这是最干净的方法,同时确保在父母一方和孩子一方同时调用所有回调?
即。我希望实现这样的目标
@child = @curr_parent.children.first
@child.update_attributes(:parent_id, @new_parent)
我只是做一些像
这样的事情@child = @curr_parent.children.first
@curr_parent.children.delete(@child)
@new_parent.children.create(@child)
@child.update_attributes(:parent_id, @new_parent)
答案 0 :(得分:0)
我没有尝试过,但我怀疑你应该能够重新表达孩子:
child = parent.children.first
child.parent = new_parent
child.save!
答案 1 :(得分:0)
这也应该有效:
child = oldParent.children.first
newParent.children << child