gpt4 book ai didi

ruby-on-rails - Rails has_many 关联删除父对象但不删除子对象

转载 作者:行者123 更新时间:2023-12-05 08:32:49 24 4
gpt4 key购买 nike

场景是有两个模型,一个是 Room,另一个是 Tickets,关系是 Room has_many :tickets。

要求是当一个房间在删除票时不应该被删除。由于 tickets 表有称为 room_id 的外键,如何实现这一点?

假设如果我能够做到这一点,那么我将如何获得该特定机票的房间信息?

最佳答案

这是 Rails 的一般行为。我猜你在关联中使用了 dependent::destroy

你想要做的是dependent::nullify。这将删除您的房间对象而不删除关联的门票,并且只会将门票中的 room_id 更新为 null

class Room < ActiveRecord::Base
has_many :tickets, dependent: :nullify
end

关于删除后访问房间详细信息的第二个问题,我建议您使用 soft_delete 而不是实际删除。在这里,您要做的是当房间被删除时,您将软删除它,而不是实际删除它。因此,门票记录将保留,您还可以使用房间详细信息。

同样有可用的 gem 。一个这样的 gem 是 Paranoia .您可以查找有关此 gem 的各种教程。

希望对您有所帮助。如果您需要任何其他指导,请告诉我。

关于ruby-on-rails - Rails has_many 关联删除父对象但不删除子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47152103/

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