2012-02-05 75 views
0

我不是很好的红宝石,所以我非常感谢提供的所有帮助:)复杂的轨道模型验证

我有2种型号诊所和患者

诊所有我缓存三个字段当创建一个病人

max_patients, max_female_patients, max_male_patients

我想换我围绕如何写一个验证的大脑检查以下る汇总LES添加新病人时:

不能有超过37名患者总数为1个诊所, 15名女性患者和22名例男性患者是标准的, 然而如果一个替代需要使我可以 换出3只雄性患者为1名女性, 或换出1名女性患者为1名男性

另一个令人讨厌的是,患者在时间(一个表格)上添加3个,每个患者可以选择不同的诊所日。

我希望这是有道理的..我一直在想这个好几个小时,我有一种不好的感觉,我接近这个错误的方式。

感谢提前

+0

为什么你需要存储的信息'max_patients',并且,如果他们都会给出? (37名患者) – Reactormonk 2012-02-05 22:05:30

回答

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 

路加福音