RDR3R > Single Table Inheritance (STI) в Rails 3
июля 26, 2011 | Published in Ruby on Rails, Ruby on Rails 3
Пришло мне тут два письма с просьбой написать о STI — наследовании от одной таблицы. Материал достаточно простой, однако, если люди просят — почему не уделить написанию статьи пол часика?
Признаться честно, мне не нравится термин STI применительно к Rails, поскольку на самом деле наследуются не таблицы, а классы. Здесь больше подходит термин Class Table Inheritance поскольку один класс наследуясь от другого получает доступ к таблице основного класса.
Разберемся с терминами.
Базовый класс — это класс от которого наследуются все остальные классы.
Наследуемый класс — здесь все понятно.
Для чего необходимо STI? — STI достаточно удобная штука и используется в двух основных случаях:
1. У нас имеются две и более моделей, которые имеют абсолютно одинаковые атрибуты, но должны вести себя по разному.
2. У нас имеются две и более моделей, которые имеют несколько общих атрибутов, общие атрибуты выносятся в отдельную таблицу и отдельную модель — базовый класс.