Вы можете посмотреть мои модели здесь:
https://gist.github.com/768947
Просто, чтобы объяснить, что происходит, у меня есть несколько моделей. В основе моего приложения лежат: проекты, этапы, загрузки, комментарии, пользователи. Тогда есть роли и назначения для управления авторизацией пользователя.
Я делаю это с помощью плагина Declarative_authorization & devise для входа в систему.
Итак, первый вопрос: лучше ли просто добавить столбец «Роли» в мою модель / таблицу пользователей и сохранить там роли для каждого пользователя? Если у меня есть пользователь с несколькими ролями, тогда я могу просто сохранить все роли в виде массива и циклически просматривать их по мере необходимости.
Или лучше сделать это так, как у меня сейчас настроено, где я использую две отдельные таблицы и несколько объединений для настройки назначений? У меня только 4 роли: дизайнер, клиент, администратор, суперпользователь.
Лучше в том смысле, что каждый запрос со столбцом «дешевле» с точки зрения вычислительных ресурсов, чем с объединениями, или разница не столь значительна?
Полагаю, корень моего вопроса ... прямо сейчас, если я хочу получить проект, назначенный для current_user, я просто делаю current_user.projects.each do |project|
и циклически перебираю их таким образом. Это после того, как я сделал: @projects = current_user.projects
в контроллере проектов. То же самое относится ко всем другим моим моделям - кроме пользователей и ролей.
Однако, если бы я захотел найти пользователя с ролью «клиент», он очень быстро запутался. Или я это слишком усложняю?
Любая помощь будет оценена.