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

Ruby on rails 保存父模型和嵌套关联后,Rails在父模型上创建后运行,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我正在Rails应用程序中创建一个新资源,发送到我的端点的JSON如下所示: { "resource1": { "resource2_attributes": [{ "name": "Test 1", "resource3_attributes": [{ "field1": "test" }] }] } } 嵌套属性工作正常,并且正在设置父模型上的关联 但是,当保存顶层的resource1时,会触发模型上的创建后回调(

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

{
  "resource1": {
    "resource2_attributes": [{
      "name": "Test 1",
      "resource3_attributes": [{
        "field1": "test"
      }]
    }]
  }
}
嵌套属性工作正常,并且正在设置父模型上的关联

但是,当保存顶层的
resource1
时,会触发模型上的
创建后
回调(在保存关联之前)。
Resource1
上的
after\u create
回调使用子关联作为其逻辑


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

事实证明,Rails无法完成我在撰写本文时试图完成的任务

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

下一个选项:

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

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


这不是最理想的方法,因为我不能在父模型中拥有逻辑,在我看来,父模型应该属于哪个位置,但至少一切都运行顺利,数据也有意义。

事实证明,这是一个愚蠢的问题,从2016年2月19日起在Rails中是不可能的。查看我的答案以查看其他选项。