проверка модели сложных рельсов - PullRequest
0 голосов
/ 06 февраля 2012

Я не очень хорошо разбираюсь в рубине, поэтому я очень благодарен за всю предложенную помощь:)

У меня есть две модели: Клиника и пациент * В 1003 *

клиниках есть три поля, которые я кешируюагрегирует, когда создается пациент

max_patients, max_female_patients, max_male_patients

Я пытаюсь обдумать, как написать проверку для проверки следующих правил при добавлении нового пациента:

не может иметь более 37 пациентов в общей сложности на 1 клинику, 15 пациентов женского пола и 22 пациента мужского пола являются стандартом, однако, если необходимо произвести замену, я могу заменить 3 пациентов мужского пола на 1 женщину или заменить 1 женщинупациент для 1 мужчины

Еще одна неприятность заключается в том, что пациенты добавляются по 3 человека одновременно (в одной форме), и каждый пациент может выбрать другой день клиники.

Надеюсь, это имеет смысл ... ЯЯ думал об этом часами, и у меня плохое предчувствие, что я подхожу к этому неправильно.

Спасибо за любую помощь заранее

1 Ответ

0 голосов
/ 06 февраля 2012

Я бы не стал создавать столбцы базы данных для этих атрибутов, я бы использовал наследуемую дочернюю переменную класса через 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

-Луки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...