首页 > 解决方案 > 从 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。

提前致谢

标签: ruby-on-rails

解决方案


推荐阅读