我有一个Followups
表,其中包含以下字段:patient_id
,death_date
(以及其他字段..)。
同一个patient_id
可能有多个记录,但是该death_date
只能有一个patient_id
。
唯一索引无法使用,因为用户可以插入两个不同的death_date。
在Rails 5中,哪一种是实现此目标的最佳方法?
请尽可能举一个例子。
谢谢
答案 0 :(得分:1)
您可以通过对Followup
模型进行回调来做到这一点:
假设一个Patient
has_many :followups
class Followup
belongs_to :patient
validate :check_for_existing_death_date
private
def check_for_existing_death_date
# This will grab the first one if any with a death date exist
# This also assumes that the patient_id and patient exist
followup = patient.followups.where("death_date IS NOT NULL").take
# if you want to raise an error...
if followup
errors.add(:death_date, 'There is already a death date for this patient')
return false
end
# If not, do something with the data
# if followup
# self.death_date = nil # or followup.death_date if you want it saved on followups as well
# end
end
end
我认为最好的方法是将death_date
存储在Patient
记录中,因为每个病人死亡仅发生一次。