我对ruby不太满意所以我非常感谢所提供的所有帮助:)
我有2个模特诊所和病人
诊所有三个字段,我在创建患者时缓存聚合
max_patients, max_female_patients, max_male_patients
我正在尝试围绕如何编写验证以在添加新患者时检查以下规则:
一个诊所的患者总数不能超过37名, 15名女性患者和22名男性患者是标准, 但是,如果需要替换,我可以 替换3名男性患者为1名女性, 或替换1名女性患者为1名男性
另一个令人讨厌的问题是患者每次加入3次(在一种表格上),每位患者可以选择不同的诊所日。
我希望这是有道理的......我一直在考虑这个问题几个小时,我感觉很糟糕,我正以错误的方式接近这个。
感谢您提前提供任何帮助
答案 0 :(得分:0)
我不会为这些属性创建数据库列 通过cattr_accessor使用子可继承的类变量 (在ActiveSupport中定义的类扩展)。
我不确定你的意思:
如果需要进行替换,我可以替换3名男性患者 1名女性,或替换1名女性患者为1名男性
我认为你没有提供足够的信息,或者无论如何我都不清楚。 例如,何时需要替换??约会是经常性的,还是一次性的(因为它是诊所......我假设是一次性的)。无论如何,希望这会有所帮助。
class Clinic
has_many :patients
cattr_accessor :max_patients, :max_male_patients, :max_female_patients
self.max_patients = 37
self.max_male_patients = 22
self.max_female_patients = 15
end
class Patient
belongs_to :clinic
has_many :appointments
...
end
class Appointment
belongs_to :patient
before_save :switch_appt_date_if_full
private
def switch_appt_date_if_full
# implementation goes here
# note: the instances of Appointment can access the clinic's capacities through
# self.patient.clinic.max_patients, etc...
end
end
路加福音