插入后的 Rails 回调

Posted

技术标签:

【中文标题】插入后的 Rails 回调【英文标题】:Rails callback for after insert 【发布时间】:2019-07-18 15:08:19 【问题描述】:

我正在使用一个闭包表来对我的一个模型的层次结构进行建模。因此,每当调用 Model.create 时,我都会使用 after_create 挂钩来创建 tree_path 对象。我还希望在 #new#save 一起调用时运行此挂钩。这意味着我必须使用 after_save 而不是 after_create,但是 after_save 也在更新时运行,这是我不想要的。

是否可以让回调在对象的初始插入时运行(在创建或第一次保存时)但不能在更新时运行?从回调中创建更多对象是不好的形式吗?

【问题讨论】:

【参考方案1】:

经过更多调查,似乎 after_create 实际上确实在调用 save 之后运行,但前提是对象在创建之前和之后都没有保存。

【讨论】:

以上是关于插入后的 Rails 回调的主要内容,如果未能解决你的问题,请参考以下文章

Rails - 在before_destroy回调时取消销毁

Rails 模型中的条件回调?

在 Rails 中为域逻辑使用回调的优缺点

回调belongs_to关联rails

Rails 数据更改回调

什么时候在 Rails 回调链中分配 Postgres 中的默认值?