为什么 rails 认为我的对象没有持久化?



我有一个myobject.save!导致这个错误的情况:

PG::UniqueViolation: ERROR:重复键值违反唯一约束"things_pkey"DETAIL: Key (id)=(12345)已经存在。:插入"事物";("id")取值(12345,…)返回"id">

所以,rails有一个持久化的记录,但试图做一个插入而不是更新,然后在插入中包含id(因为,我猜,在插入的情况下,它不习惯排除任何列)。

进一步在代码中,在同一对象上有一个save!,在我正在查看的情况下可能会或可能不会触发。关于这个保存,唯一值得注意的是它发生在rescue块内。我在控制台中做了一些简单的测试,看看如果对象是在救援块中创建的,是否出于某种原因不认为它是持久的,并且没有发现任何这样的行为。

是什么导致rails认为我的对象不是持久化的?

明白了!

我正在用user.things.build构建对象。用户#things不是一个关联。它是一个返回ActiveRecord::Relation的方法。这个方法最近更改为Things.where(id: ...)。因此,在构建新对象时,rails会顺从地使用尽可能多的查询。

相关内容

  • 没有找到相关文章

最新更新