has_many through:不删除关联对象

时间:2015-05-19 14:07:44

标签: ruby-on-rails ruby-on-rails-4 associations has-many-through

我想删除患者及其所有约会而不删除医生。

采取以下协议:

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

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

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

每当我移除患者时,我都会失去患者甚至接触过的所有医生(通过预约)。医生可能只见过一名患者......但是当患者被移除时,没有理由去除医生。

我觉得我需要像

这样的东西
class Physician < ActiveRecord::Base
      has_many :appointments, dependant: hell no!

有人能帮助我吗? has_many through relationship可能是错误的解决方案吗?

由于

编辑:由于相关的患者或医生离开手术,我绝不希望从系统中移除患者或医生。

如果医生离开,这并不意味着患者也会离开。虽然我很高兴他们的约会被删除。同样,如果患者离开,这并不意味着我的医生也会离开。

1 个答案:

答案 0 :(得分:1)

您是否试图删除或摧毁患者?通常删除应跳过销毁相关记录。不过,请检查API中的这些注释:

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#label-Delete+or+destroy%3F