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

Ana*_*ava 1 ruby-on-rails associations has-many dependent-destroy

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

要求是当房间正在删除时不应删除票证.如何实现这一点,因为票证表有外键称为room_id?

并且假设我能够这样做,那么我将如何获得该特定票的房间信息?

Aak*_*sha 5

这是Rails的一般行为.我想你正在使用dependent: :destroy你的协会.

你想要做的是dependent: :nullify.这将删除您的房间对象而不删除关联的故障单,并仅在room_id故障单中更新为null

class Room < ActiveRecord::Base
    has_many :tickets, dependent: :nullify
end
Run Code Online (Sandbox Code Playgroud)

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

有可用的宝石.一个这样的宝石是偏执狂.你可以在这个宝石上查找各种教程.

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