2014-11-24 4 views
0

ВажныеПолиморфные модели (не ассоциации!) В Rails

Для тех, кто TL; DNR: Я говорю не о полиморфных ассоциаций.

Вопрос

В объектно-ориентированном программировании я часто с использованием полиморфных бизнес-логики классов уровня данных: один базовый абстрактный класс и его потомков для конкретного поведения.

Теперь я думаю, можно ли это сделать в Rails. В настоящее время это кажется нереальным, поскольку модели Rails тесно связаны с таблицами базы данных.

Возможно ли иметь одну таблицу для нескольких моделей Rails (с общим предком) - некоторые поля являются общими, другие являются потомками?

ответ

1

Да. Индивидуальное наследование.

Добавить столбец type:string в таблицу для модели, которую вы хотите унаследовать, а затем создать новые классы, которые наследуются от вашей базовой модели (скажем, Animal). Экземпляр этого класса (например, Cat) определяется как Animal, type - "Cat".

Смежные вопросы