2012-02-05 74 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 

路加福音