разработка и несколько пользователей

Я пытаюсь, чтобы Devise создал единую модель пользователя, а разные роли были отдельной моделью. Моя модель пользователя (от пользователя rails g devise) имеет поле электронной почты, имени, фамилии и роли.

Роли администратор, зритель, участник. Итак, я создал модели администратора, зрителя и конкурента, которые наследуются от модели пользователя.

Я следовал верхнему ответу из разработки и нескольких пользовательских моделей, и я могу создать пользователя. Однако миграция модели моего конкурента также содержит другую информацию, такую ​​как название конкурса и местоположение, которые не требуются для других моделей. Когда я делаю Competitor.create() и ввожу необходимую информацию для создания пользователя devise, пользователь сохраняется в базе данных, даже если у меня есть нулевые ограничения на модель конкурента для имени и местоположения конкурса.

Когда я запускаю Spectator.all, появляются недавно созданные данные о конкурентах, чего, как я думал, быть не должно....

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

Другой вопрос, почему когда я делаю Spectator.all, отображается информация о конкуренте?


person Josh L    schedule 12.09.2013    source источник
comment
Вам нужно будет опубликовать код. Нулевое ограничение должно работать, вы выполнили повторную миграцию? Таблица описания «конкуренты» выглядит нормально?   -  person squarism    schedule 12.09.2013
comment
Ознакомьтесь с этим руководством по использованию devise, cancan и roify. Я использовал эту настройку раньше, и она работает очень хорошо.   -  person n_i_c_k    schedule 12.09.2013


Ответы (2)


Есть гораздо лучший способ использовать devise для нескольких пользователей.

Используйте Rolify Gem

Это делает разработку намного проще, быстрее и безопаснее. Вы можете получить конфигурацию в соответствии с вашими требованиями в вопросе «Модель для одного пользователя, и каждая роль имеет отдельную модель».

Учебник по использованию Rolify gem + Devise от разработчиков Rolify Gem

person Aditya Kamatar    schedule 12.09.2013

Если вам нужна система авторизации, выберите CanCan, созданный Райаном Бейтсом. С CanCan у вас может быть много ролей. Я использую его с devise без проблем. См. Авторизация на основе ролей и Отдельная ролевая модель. И проверьте этот ScreenCast о CanCan.

person Mostafa Hussein    schedule 12.09.2013