Ruby on Rails 3 наследование одной таблицы или наследование нескольких таблиц? - PullRequest
4 голосов
/ 20 февраля 2012

Я работаю над приложением Ruby on Rails 3.Я уже реализовал аутентификацию и авторизацию на основе Devise и Cancan.В рамках этого я реализовал объект «Член», который может иметь как минимум 2 разные роли - «Пользователь» и «Компания».Физически я хотел бы представить эти роли в виде двух производных классов от Member, таких как User и Company.

Должен ли я использовать наследование одной таблицы или наследование нескольких таблиц.В случае наследования нескольких таблиц, какой плагин мне следует использовать?

1 Ответ

4 голосов
/ 20 февраля 2012

Я знаю, что это не ответ на ваш вопрос, но я думаю, вам следует пересмотреть вопрос об использовании чего-то другого, кроме наследования.

Наследование является отличным ОО-механизмом, но очень часто злоупотребляется. Чаще всего вы можете работать лучше с ассоциацией и каким-то образцом стратегии , чем с наследованием.

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

Если вы хотите использовать шаблон «Стратегия» в своей модели activerecord, полиморфная ассоциация может быть подходящим способом (это позволяет вам даже иметь стратегии с состоянием)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...