2016-05-10 4 views
3

Вопрос может быть не таким сложным, но я смущен. У меня есть два пользователя: ученик и учитель, а для тех, кому нужны отдельные модели, контроллеры и представления. Я хочу, чтобы учитель использовал /t/sign_up и для ученика /s/sign_up. Я использую программу для аутентификации, я знаю, что это возможно, потому что так работает активный администратор.Использование утилит для нескольких моделей

ответ

2

условии, что вы уже дали несколько моделей и представлений с завещанию, и просто хочу, чтобы изменить путь к файлу, вы можете сделать, что настройка конфигурации/routes.rb:

devise_for :students, path: 's' 
devise_for :teachers, path: 't' 

который заменит ваши маршруты, как это :

http://localhost:3000/s/sign_up 
http://localhost:3000/t/sign_up 

Если вы хотите, чтобы ваши мнения на основе различных моделей, вы можете настроить config.scoped_views = true внутри config/initializers/devise.rb файла и генерировать представления для этой модели:

rails g devise:views students

И если вы хотите, чтобы настроить каждый контроллер, вы можете создавать свои файлы контроллеров, как это:

rails generate devise:controllers students

Это будет создавать контроллеры на основе имени модели, таким образом, вы можете определить их в ваши маршруты:

devise_for :students, path: 's', controllers: { sessions: "students/sessions" }

+0

Благодарим за отзыв. Я попробовал это, и он дал мне два вида маршрутов. '/ S/sign_up' относится к' devise/registrations # new', а second '/ t/sign_up' также относится к' devise/registrations # new'. Разве это не создаст конфликтов? Как разработчик будет знать, чтобы создать новый 'student' в'/s/'и новый экземпляр учителя в'/t/'? – user464

+0

Легко, если вам нужно другое поведение контроллера, вы можете создавать контроллеры специально для этой модели. Я отредактирую ответ. – pyfl88

+0

Спасибо, я создал отдельные контроллеры для студентов и преподавателей в своих выигранных каталогах, то есть «контроллеры/ученики/разработчики» и «контроллеры/учитель/разработчик» также настраивают маршруты и «инициализаторы» для разработки и создания представлений. Теперь разработчик использует мои контроллеры, но все еще не использует мои представления, созданные с помощью devise, т. Е. «Rails g devise: views student/devise» и «rails g devise: views teacher/devise». – user464

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