2013-08-28 4 views
0

Как настроить устройство более чем с одной моделью? Я уже пробовал использовать rollify и cancan для установки отдельных ролей в моей базе данных, но каждая роль имеет другой способ аутентификации для входа в систему. Например, у студента будет номер student_number, а у лектора будет имя пользователя, но нет student_number. Также есть множество других атрибутов, которые лектор не будет иметь, что студент будет и наоборот.Усовершенствование с несколькими моделями

Я новичок рельсов 4.

+1

Вы пытаетесь выполнить аутентификацию более чем с одной моделью, с моделями с набором перекрывающихся атрибутов? – tyler

+0

Эй, да, есть один похожий атрибут, но они совершенно разные модели. Я собираюсь решить его с наследованием, но единственной проблемой является аутентификация. Как я могу аутентифицировать обе модели с совершенно разными атрибутами, student_number и username. Я застрял, когда думаю, что если я наследую от пользователя (у которого есть как student_number, так и имя пользователя), один из них будет оставлен пустым при регистрации, и разработчик может жаловаться на это ... –

+0

https://github.com/plataformatec/ devise # configuring-multiple-models – Santhosh

ответ

1

Это выглядит как классы и наследование может пригодиться в данном случае. Как определить режим пользователя и позволить ученику и преподавателю наследовать этот класс?

class Student < User 
    # student's peculiar attributes 
end 

class Lecturer < User 
    # lecturer's peculiar attributes 
end 

Тогда у вас могут быть два отдельных контроллера и соответствующие виды. На странице входа могут быть две ссылки на правильные страницы входа.

+0

Спасибо! Это отличное решение, но как я могу получить возможность аутентифицировать студентов со своим учеником и преподавателями с их именем? Я прошу об этом, потому что у лектора не будет номера student_number, и поэтому я не могу оставить его пустым в базе данных ... –

+0

Если у студентов нет имени пользователя, вы можете аутентифицировать пользователей через поле имени пользователя и в случае учеников по умолчанию задали номер своего ученика. – Miotsu

0

Я решил эту проблему с использованием модели пользователя и модели профиля «has_one», подключенной к Пользователю, все пользователи регистрируются в той же таблице, но при этом загружают другие данные, сохраненные в профиле.

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

Смежные вопросы