0

我有两个模型医师和患者,如下所示:

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

p = 患者对象。

所以, p.appointments.append (physican_obj) 是正确的方法。但是,如果我两次运行相同的命令,它会添加两次相同的东西。那么,在附加之前检查它是否已经存在是否很好?最好的方法是什么?

我的要求是,我得到一个要添加的对象列表,所以我需要遍历每个对象并附加每个对象。如果我需要在追加之前检查,我需要检查每个循环,这是一个昂贵的过程。

4

1 回答 1

1

一种方法是使用范围。

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

  validate_uniqueness_of :physician_id, scope: :patient_id
end

这将确保不允许复制两个 id 的记录。

于 2013-10-20T17:35:35.930 回答