gpt4 book ai didi

ruby-on-rails - UUID 列值在模型重新加载之前不可用

转载 作者:行者123 更新时间:2023-11-29 11:22:18 24 4
gpt4 key购买 nike

我有一个带有 :uuid 列的模型,由以下迁移设置。

add_column :website, :uuid, :uuid, default: "uuid_generate_v4()"

似乎直到我重新加载一个新创建的网站时才生成 UUID。

website = Website.create!(host: 'example.com')
website.uuid
# => nil
website.reload
# => "de76e1c0-ac4a-4da6-8baf-8b9f037d39b1"

有没有办法让 UUID 可用而无需重新加载?

最佳答案

我也偶然发现了这一点。找到这个closed issue在 Rails 中,维护者基本上会说“这是有意的”(太好了,谢谢)。

我最终使用了类似于底部附近描述的解决方法的东西,这是我的代码片段:

after_commit :reload_uuid, on: :create

def reload_uuid
self[:uuid] = self.class.where(id: id).pluck(:uuid).first
end

我不费心去检查它是否有 uuid 属性,因为我只用 uuid 将它添加到我的类中,并且我使用 after_commit 因为如果其他回调导致保存到,为什么还要费心获取 uuid失败?

关于ruby-on-rails - UUID 列值在模型重新加载之前不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25464705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com