В вашей базе данных у вас должна быть одна таблица с именем users. Эта таблица должна иметь строковый столбец, который по умолчанию называется типом. Если вы используете другое имя для этого столбца, вам придется вручную указать имя столбца наследования, используя self.inheritance_column = "column_name"
В вашем приложении есть три модели: пользователь, студент и учитель. Пользователь наследует от ActiveRecord :: Base как обычно, ученик и учитель наследуют от пользователя.
После этого вы сможете создавать новые объекты Учителя и Ученика. Внутренне это работает путем записи имени модели в поле типа в пользовательских таблицах, а затем, когда вы используете Student.find
, он добавляет предложение в SQL, чтобы возвращать только те строки, где type = 'Student'
Вы можете добавить общее поведение в класс User, например, проверки и т. д. затем добавляют дополнительное поведение к унаследованным классам.
Более полное описание того, как работает ИППП, можно найти в Martin Fowlers Book (Образцы архитектуры корпоративных приложений) .