在销毁has_many / belongs_to元素时更新ID

时间:2013-03-27 19:17:41

标签: ruby-on-rails ruby-on-rails-3.2

拥有类状态和故障单

class Status < ActiveRecord::Base
  has_many :tickets
end

class Ticket < ActiveRecord::Base
  belongs_to :status
  attr_accessible :name, :status_id
end

在视图中,我有一个下拉菜单,您可以在其中选择故障单的状态,其中状态ID是选项的值。当我去删除状态时会出现问题,已删除状态的状态ID仍保存在故障单中。如何取消具有该销毁状态的故障单的所有状态ID,或者将这些故障单的状态ID更改为活动状态?

2 个答案:

答案 0 :(得分:2)

使用:dependent => :destroy作为门票。

class Status < ActiveRecord::Base
  has_many :tickets, :dependent => :destroy  #`:dependent => :nullify` to set all foreign keys to nil
end

这将删除已删除状态的所有故障单记录。

答案 1 :(得分:0)

class Status < ActiveRecord::Base
  has_many :tickets, dependent: :destroy
end

这意味着门票取决于状态。当状态被销毁时,它也会销毁所有关联的票证。 这就是#delete#destroy的差异变得更加突出的地方。