我有一些模型Parent
,其中has_many Child
,我在父类中有after_create
回调
has_many :children
after_create :add_children
def add_children
self.childlren = fetch_some_children
end
然而,这并没有做任何事情,从fetch_some_children
取出的孩子没有更新他们的外键。现在,如果我将回调更改为before_create
而不是after_create
,那么它可以正常工作并更新子外键,那么为什么会这样呢?
修改 我有一些其他复杂的代码导致了这个问题,所以它现在已经修复了。
答案 0 :(得分:2)
def add_children
self.childlren = fetch_some_children
self.save # to persist the data
end
当您使用before_create
时设置children
并保存after_create
,因为它已经创建了,您必须保留数据