gpt4 book ai didi

ruby-on-rails - Rails 3 如何在 after_create 中获取当前记录 ID

转载 作者:行者123 更新时间:2023-12-05 08:58:03 25 4
gpt4 key购买 nike

正如标题所说,我正在尝试获取我刚刚创建的记录的 ID,我试图在控制台中获取它,但 ID 为 nil。

这是我在 after_create 开始时在控制台中打印的 self

<Unit id: nil, uuid: "9f11be13-8d07-4471-a3bb-f87943966bbd", organization_id: 33, property_id: 430, door_number: "3", created_at: "2014-12-05 13:27:57", updated_at: "2014-12-05 13:27:57", deleted_at: nil, size: "5 1/2", door_number_int: 3, leases_count: 0, tasks_count: 0, notes: nil, state_id: 68, state_tasks_count: 2, current_lease_id: nil, next_lease_id: nil, state_tasks_serie: 1, state_tasks_serie_count: 2, price_asked: #<BigDecimal:7fc79162cb80,'0.123E3',9(18)>, availability_date: nil, comments_count: 0>

有没有办法获取记录 ID?

这是我目前尝试过的

after_create
self.save
end

before_save
if self.id.present?
# do stuff
end
end

它不是很漂亮,但它可以工作

回答@MarekLipka:它不会导致无限循环,因为记录只创建一次。

我也尝试过使用:

after_create
reload

# do stuff if self.id
end

但这似乎不起作用。

正如@PauloFidalgo 所说,除了在 after_save 方法中,我无法获取 id。虽然我很奇怪我能在第二个before_save中获取到(由after_create中的save触发)。

最佳答案

id 仅在save 时分配,在create 时您只是创建骨架对象并提供一些值。

要获取对象的 id,只需调用 object.id

如果出于某种原因你想在 after_* 方法中获取 id,你需要使用 after_save:

 after_save {id = self.id}

您也可以在创建时分配一个ID,但您需要查询数据库并在变量中设置值。为此,您需要使用数据库中的序列来设置 ID。

关于ruby-on-rails - Rails 3 如何在 after_create 中获取当前记录 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27317428/

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