Как организовать многоуровневые модели наследования в Rails?

Я не могу остановиться на том, как организовать базу данных для моего приложения rails. Вопросы, которые я нашел здесь и в Google, обсуждают проблемы с ограниченным наследованием классов. Что делать, если количество классов очень велико. Как организовать классы, если я хочу иметь один класс для каждого типа для всех типов, указанных в schema.org иерархия?

Хотя я обнаружил некоторую поддержку наследования таблиц классов, такую ​​как этот драгоценный камень под названием CITIER, реализация наследования одной таблицы кажется проще. и лучше поддерживается.

Должен ли я придерживаться STI или попытаться использовать MTI?


person rohitmishra    schedule 14.06.2012    source источник
comment
Я нашел этот интересный пост о множественном наследовании таблиц. mediumexposure.com/multiple-table-inheritance-active-record   -  person rohitmishra    schedule 17.10.2012


Ответы (1)


ИМХО, STI имеет смысл, когда два объекта, которые будут инкапсулированы классами, имеют почти все соответствующие атрибуты. Таким образом, в газете может иметь смысл иметь класс Employee, у которого есть класс Editor, который наследуется от него (класс Editor ‹ Employee), потому что редактор может быть просто немного другим типом сотрудника. Проблема с STI может возникнуть, когда объекты, которые вы моделируете, имеют слишком много общего, даже если имеет смысл рассматривать один как подкласс другого. Одна таблица может стать слишком малонаселенной. В этом случае я считаю более эффективным использовать «имеет» и «принадлежит» для моделирования объекта. YMMV.

person thisfeller    schedule 14.06.2012
comment
Я также считаю, что размещение всех объектов в STI приведет к большому количеству нулей. Мне нужно, чтобы все объекты имели связь с объектом вещи, который является родительским объектом для всех остальных. Должен ли я использовать полиморфную ассоциацию или должен связать другие объекты с объектом вещи? - person rohitmishra; 14.06.2012