Вот сценарий, с которым я столкнулся:
Назначение встречи может быть назначено на:
- сегодня
- некоторое время в течение недели
- на конкретную дату
Итак, атрибуты могут быть разными для каждого «типа» встречи.
Я думал об этих моделях и использовал их с ИППП, но я 'я не уверен, что я на правильном пути:
class Appointment < ActiveRecord::Base
class TodayAppointment < Appointment
class WeekAppointment < Appointment
class SpecificDateAppointment < Appointment
Таблица:
string, Type #type of the appointment (TodayAppointment, WeekAppointment...)
datetime, When #data used when type field is "SpecificDateAppointment"
string, Something #used when type field is "TodayAppointment"
Какой лучший способ смоделировать это?
Это хорошийкандидат на наследование одной таблицы?
ОБНОВЛЕНИЕ
Спасибо @Mike, @SpyrosP за помощь до сих пор.Я предложил варианты, которые у меня есть ниже.
Это «представления» таблиц базы данных и их внешний вид.
Какой из них кажется наиболее подходящим?
------------------------------------------------------------------------
Option A--(Polymorphic Association)
------------------------------------------------------------------------
|patients | day_appointments | week_appointments
| appointment_type | data | data
| appointment_id | |
------------------------------------------------------------------------
Option B--(Child references parent) (What is this pattern called?)
------------------------------------------------------------------------
|patients | day_appointments | week_appointments
| | patient_id | patient_id
------------------------------------------------------------------------
Option C--(Polymorphic Association + Single Table Inheritance of appointments)
------------------------------------------------------------------------
|patients | appointments |
| appointment_type | type |
| appointment_id | day_data |
| | week_data |
------------------------------------------------------------------------
Option D--(Child references parent + Single Table Inheritance of appointments)
------------------------------------------------------------------------
|patients | appointments |
| | type |
| | day_data |
| | patient_id |
------------------------------------------------------------------------