如何做ruby on rails依赖destroy

时间:2015-08-09 17:11:28

标签: ruby-on-rails ruby associations relationship dependent-destroy

http://guides.rubyonrails.org/association_basics.html

基于上面的例子,我创建了:

class Physician < ActiveRecord::Base
  has_many :appointments
  has_many :patients, through: :appointments
end

class Appointment < ActiveRecord::Base
  belongs_to :physician
  belongs_to :patient
end

class Patient < ActiveRecord::Base
  has_many :appointments
  has_many :physicians, through: :appointments
end

有人可以指导我如何执行级联删除操作。

  1. 如果我删除患者,我希望删除患者的所有预约。我是否需要在某处使用依赖关键字?有人可以证明如何解决这个问题。

  2. 如何删除特定患者的所有约会?

  3. 提前致谢!

1 个答案:

答案 0 :(得分:1)

class Patient < ActiveRecord::Base
  has_many :appointments, dependent: :destroy
  has_many :physicians, through: :appointments
end

Patient.find(id).destroy

这对你有用。请务必使用destroy而不是delete,因为如果您使用删除,则无法获得预期的级联效果。

更新2:

如果您想要销毁所有约会而不是病人,您可以这样做:

Patient.find(id).appointments.destroy_all