Rails has_many关联会删除父对象,但不删除子对象



场景是有两个模型,一个是房间,另一个是票证,关系是房间has_many:票证。

要求是,当房间删除票证时,不应删除。如何完成此操作,因为票证表的外键称为room_id?

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

这是 Rails 的一般行为。我猜你正在使用你的协会中的dependent: :destroy

您要做的是dependent: :nullify.这将删除您的房间对象而不删除关联的票证,并且仅将票证中的room_id更新为 null

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

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

有宝石可用于相同。其中一种宝石是偏执狂。您可以在此 gem 上查找各种教程。

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

你可以这样做

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

结帐这个

dependent: :nullify添加到has_many关联中,这将在删除父级后将foreign_key更改为空值:

has_many :tickets, dependent: :nullify

查看导轨文档:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many

相关内容

  • 没有找到相关文章

最新更新