Лучший способ упорядочить объекты и модели с различными наборами важных атрибутов

Предположим, у меня есть медицинское программное обеспечение, которое отслеживает выставление счетов и медицинские процедуры для пациентов. Таким образом, каждый пациент имеет три важные группы атрибутов.

  1. Общие атрибуты — имя, возраст, пол, номер пациента и т. д.
  2. Платежные атрибуты — адрес, номер счета, баланс и т. д.
  3. Медицинские атрибуты — артериальное давление, операции, группа крови и т. д.

У меня есть одна модель пациента ActiveRecord со всеми вышеперечисленными атрибутами. Затем я мог бы иметь контроллер PatientBillingDetails и контроллер PatientMedicalDetails, чтобы различать их. Должен ли я также создать еще две модели, соответствующие каждому контроллеру, или просто сделать так, чтобы каждый контроллер рисовал из одной модели пациента. Если вы создаете две новые модели, какой лучший/самый простой способ заставить их использовать только соответствующие атрибуты?


person Kyle Heironimus    schedule 07.10.2011    source источник
comment
Эта статья о наследовании нескольких таблиц и наследовании одной таблицы в ActiveRecord может содержать ваш ответ. Если вы уже знакомы с этими концепциями и просто ищете мнение, я предпочитаю MTI, потому что мне не нравится иметь кучу значений NULL в таблице.   -  person bricker    schedule 08.10.2011


Ответы (1)


Чтобы ответить на ваш вопрос напрямую, в то время как учебные пособия по Rails любят размещать информацию в одном контроллере для одной модели, мой более чем 5-летний опыт написания крупных корпоративных приложений в Rails показал мне, что контроллеры, которые вы создаете, связаны с представлениями, которые вам нужно показать, а не чем отношения один на один с моделями. Таким образом, было бы более чем разумно создать несколько контроллеров для каждого аспекта вашей модели пациента.

Однако мне кажется, что реальная проблема заключается в том, что ваша модель пациента перегружена попытками сделать слишком много вещей одновременно. Я бы посоветовал вам преобразовать часть информации в их собственные модели, особенно там, где вам может понадобиться взаимосвязь «имеет много», например медицинские атрибуты, записанные в разные даты.

Чтобы дать лучший ответ, мне нужно больше информации о том, что пытается делать ваше программное обеспечение, в частности, какую категорию «медицинского программного обеспечения» вы пытаетесь написать, и является ли это вспомогательной утилитой для специальной цели или EHR общего назначения или приложение для выставления медицинских счетов.

person Paploo    schedule 22.10.2011