Rails: наследование моделей

Я создаю приложение, в котором пользователи могут быть двух типов: пациент или врач. Каждый тип имеет свой набор атрибутов.

Можно ли создать модель пользователя, содержащую общие атрибуты, а затем создать модели пациента и врача, которые наследуются от пользователя?


person aperez    schedule 18.10.2011    source источник


Ответы (1)


Нет, но вы можете сделать то, что сказали, а затем для каждого подкласса добавить ассоциацию к модели, которая содержит определенные атрибуты. Затем вы можете использовать delegate, чтобы все выглядело гладко.

class User
end

class Doctor < User
  has_one :doctor_profile
  delegate :phd_in, :to => :doctor_profile
end

class Patient < User
  has_one :patient_profile
  delegate :symptoms, :to => :patient_profile
end

class DoctorProfile
  # E.g. attributes: phd_in:string
end

class PatientProfile
  # E.g. attributes: symptoms:text
end
person Wizard of Ogz    schedule 18.10.2011