gpt4 book ai didi

ruby-on-rails - 保存父模型和嵌套关联后,在父模型上创建后运行 Rails

转载 作者:行者123 更新时间:2023-12-04 07:30:51 28 4
gpt4 key购买 nike

我正在我的 Rails 应用程序中创建一个新资源,发送到我的端点的 JSON 如下所示:

{
"resource1": {
"resource2_attributes": [{
"name": "Test 1",
"resource3_attributes": [{
"field1": "test"
}]
}]
}
}

嵌套属性工作正常,并且正在设置父模型上的关联。

然而,当 resource1在顶层被保存, after_create模型上的回调被触发(在保存关联之前)。 after_create回拨 Resource1使用子关联作为其逻辑。

如何让我的 Rails 应用程序保存父模型和子关联,然后运行回调?

最佳答案

原来 Rails 不能做我在写这篇文章时想做的事情。

有人建议我添加 after_add关联回调有效,除了传递给该方法的记录没有 id尚未设置,因为它尚未将其提交到数据库。 after_add方法需要访问 id ,因为它正在创建关联记录,但如果没有 id 就无法创建。 .

下一个选项:

而是使用 after_add关联上的回调,并且由于在父模型上添加 ActiveRecord 回调不起作用,因为执行顺序如下:保存父级 -> 运行父级回调 -> 保存子级,当“运行父级回调”部分需要子数据,但无法获取它,因为由于操作顺序,它没有被创建。

因此,我最终采用的方法是将回调放在子模型上,并为我需要的数据引用父关联。

不是最喜欢的方法,因为我不能在父模型中拥有逻辑,在我看来,它应该属于哪里,但至少一切运行顺利并且数据有意义。

关于ruby-on-rails - 保存父模型和嵌套关联后,在父模型上创建后运行 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35468970/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com