Наследование таблицы RoR? - PullRequest
2 голосов
/ 30 мая 2009

Сценарий : в моем приложении есть таблица пользователей. У меня также есть два подкласса пользователей, скажем, участники и зрители. У каждой группы пользователей должен быть совершенно другой набор атрибутов, но оба они имеют общие свойства пользователя (логин, пароль, имя).

Каков наилучший способ реализовать это с помощью Ruby on Rails?

  • Я думаю, что наследование одной таблицы оставило бы у меня слишком много пустых полей.
  • Я думаю, что связывание трех таблиц (пользователей, зрителей, участников) будет работать нормально, но тогда, когда мне нужно отредактировать любую информацию, которую я должен сделать: @user.viewer, в то время как я хотел бы просто сделать @viewer.

Есть идеи о лучшем решении?

Ответы [ 2 ]

2 голосов
/ 30 мая 2009

Я бы, вероятно, пошел с подходом трех таблиц. Целостность данных важнее, чем чистота кода.

Если вы хотите, чтобы это выглядело аккуратнее, добавьте виртуальные атрибуты в модели Viewer и Contributor, чтобы они выглядели как локальные атрибуты User. Вы можете сделать его модулем и включить его в модели Viewer и Contributor.

Вы также можете настроить: include =>: user для поиска по умолчанию, чтобы при использовании этих полей вы не получали дополнительный запрос.

У меня сейчас очень кофеин, так что прокомментируйте, если это не имеет смысла:)

1 голос
/ 30 мая 2009

не ставьте под угрозу схему базы данных, лучше подходите ей. Мне нравится метод трех столов. Если вы плохо справитесь с базой данных, приложению будет очень трудно исправить проблемы позже, работать медленно и т. Д.

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