Комментарии 12
Описано в Rails Edge Guides и пока что отсутствует в стабильной версии.
Какого года статья? 2008-2009?
2015. Пруф:
guides.rubyonrails.org/association_basics.html
edgeguides.rubyonrails.org/association_basics.html
Или оно уже есть из коробки, просто в гайдах не описано?
guides.rubyonrails.org/association_basics.html
edgeguides.rubyonrails.org/association_basics.html
Или оно уже есть из коробки, просто в гайдах не описано?
Основная суть такая. Используем STI если набор аттрибутов у каждого объекта примерно одинаков, но объекты имеют разное поведение. В других случаях ваш второй вариант.
Ну а если уж совсем MTI охота, то берем gem Sequel. В нем есть — Sequel::Plugins::ClassTableInheritance (гем не совсем для этих целей, но умеет и это)
Или github.com/hzamani/acts_as_relation (но там багов хватает)
Или github.com/hzamani/acts_as_relation (но там багов хватает)
Если юзается Postgres, то можно вынести частные поля в колонку с типом jsonb. Даже отношения можно замутить, если сделать View для каждой под-модели + в этом случае не нужно будет поле type. Всего пара костылей в абстракции, чтобы все работало как надо. Стильно, модно, молодежно, но особо никаких профитов по производительности, делаю так только чтобы ради единственной связи несколько отдельных таблиц не создавать.
А как же полиморфизм? Хабр не даёт вставлять код из-за кармы, вот ссылка на код
pastebin.com/VZScxira
pastebin.com/VZScxira
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Multiple/Class Table Inheritance в Rails