ruby-on-rails - 从 Rails 中的 has_one 关联创建新对象时,如何将最新实例设置为父级?
问题描述
我在模型中有这个代码:
*bar.rb*
belongs_to: foo
*foo.rb*
has_one :bar
我们有一个 Foo。假设一个 Bar 被创建bar.create(foo_id: foo.id)
,那么之后我们就foo.bar
指向了 Bar 的新实例对象。现在我想知道如何创建新的 Bar 并更新 Foo,所以在foo.bar
它显示创建的最新 Bar 之后?
我尝试了什么:
Bar.create(foo_id: foo.id)
有时它在运行后显示最新的foo.bar
,有时它不显示,这就是问题。
Foo.update(bar: new_bar)
说 ActiveRecord::RecordNotSaved (无法删除现有的关联 foo。记录在其外键设置为 nil 后无法保存。)
在模型中,当我尝试使用after_create :update_bar_foo_latest
这种方法对其进行调试时:puts bar.foo
它始终是最新的实例。但是当我签入数据库时,它仍然是旧的 foo。
提前致谢
解决方案
推荐阅读
- docker - 如何从图像创建干净的 Docker 容器?
- typescript - Typescript 从一个命名空间下的多个 d.ts 文件中导出所有类型/类
- google-cloud-platform - 将 Google Cloud 虚拟机映射到物理机
- java - SQLException: 错误: "\" 处或附近的语法错误
- protocol-buffers - 如何将我自己的代码从 proto 文件添加到 JAVA 生成的类中?
- vba - 显示 msgbox Excel VBA
- python-3.x - 使用 python 3.x 进行一维插值
- python - 面向对象的 Python,如果 __name__ == '__main__'?
- tensorflow - 使用 tf 梯度更新 keras 模型
- google-cloud-endpoints - Google Cloud Endpoints:使用 protobuf.Any 字段对消息进行转码