代码之家  ›  专栏  ›  技术社区  ›  John Bachir

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

  •  0
  • John Bachir  · 技术社区  · 5 年前

    myobject.save! 导致此错误的原因是:

    PG::UniqueViolation:错误:重复键值违反唯一约束“things_pkey” 详细信息:密钥(id)=(12345)已存在。 :将返回“id”的值(12345,…)插入到“things”(“id”)中

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

    save! 在同一个物体上,在我看到的情况下,它可能会也可能不会开火。这次拯救唯一值得注意的是它发生在一个 rescue

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

    0 回复  |  直到 5 年前
        1
  •  0
  •   John Bachir    5 年前

    我当时正在用 user.things.build Things.where(id: ...) . 因此,在构建新对象时,rails顺从地使用了尽可能多的查询。

    推荐文章