场景是有两个模型,一个是 Room,另一个是 Tickets,关系是 Room has_many :tickets。
要求是,当房间正在删除门票时,不应删除。如何做到这一点,因为门票表有外键称为 room_id ?
假设如果我能够做到这一点,那么我将如何获得该特定门票的房间信息?
场景是有两个模型,一个是 Room,另一个是 Tickets,关系是 Room has_many :tickets。
要求是,当房间正在删除门票时,不应删除。如何做到这一点,因为门票表有外键称为 room_id ?
假设如果我能够做到这一点,那么我将如何获得该特定门票的房间信息?
这是 Rails 的一般行为。我猜你dependent: :destroy
在你的协会中使用。
你想做的是dependent: :nullify
. 这将删除您的房间对象而不删除关联的票证,并且仅room_id
将票证中的 更新为 null
class Room < ActiveRecord::Base
has_many :tickets, dependent: :nullify
end
根据您在删除后访问房间详细信息的第二个问题,我建议您使用 soft_delete 而不是实际删除。在这里,您要做的是,当房间被删除时,而不是实际删除它,您将软删除它。因此,门票记录将保留,您还可以使用房间详细信息。
有相同的宝石。一个这样的宝石是偏执狂。您可以查找有关此 gem 的各种教程。
希望这会有所帮助。如果您需要任何其他指导,请告诉我。
添加dependent: :nullify
到 has_many 关联,这将在删除父项后将 foreign_key 更改为 null:
has_many :tickets, dependent: :nullify
查看 Rails 文档:http ://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many