奇怪的after_create行为

时间:2015-07-30 13:49:42

标签: ruby-on-rails activerecord

我有一些模型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,那么它可以正常工作并更新子外键,那么为什么会这样呢?

修改 我有一些其他复杂的代码导致了这个问题,所以它现在已经修复了。

1 个答案:

答案 0 :(得分:2)

def add_children
 self.childlren = fetch_some_children
 self.save # to persist the data
end

当您使用before_create时设置children并保存after_create,因为它已经创建了,您必须保留数据