Подтвердить что ты не робот

Нужен ли мне контроллер "Пользователи" при использовании Devise in Rails

Я новичок Rails. Я работаю над небольшим проектом Rails4, пытающимся улучшить свои навыки. Я слабо следую учебному пособию M.Hartl.

В соответствии с учебным пособием создается пользовательская аутентификация пользователя. Однако я хотел бы использовать Devise для аутентификации пользователей. Должен ли я иметь контроллер пользователя, как в учебнике? В каких случаях я должен использовать/не использовать контроллер Users, когда уже использую Devise?

Что касается учебника, я просто пропущу часть, генерирующую контроллер, или мне нужно сопоставить действия с Devise?

4b9b3361

Ответ 1

Вам нужен только пользовательский контроллер, если вы хотите управлять пользователями отдельно от обычного процесса регистрации/обновления. У меня есть пользовательский контроллер, так что администраторы могут управлять (создавать, редактировать, обновлять, удалять) пользователей независимо от обычного процесса регистрации/обновления.

Конфликт с разработкой, вероятно, связан с тем, что у вас есть devise_for :users … в вашем файле маршрутов, чтобы настроить его, а также resources :users для вашего UserController. Это означает, что разработчик и ваш UserController будут пытаться использовать одни и те же маршруты /users. Вам нужно разделить их, изменив путь, на который сопоставляется один из них. Вы могли бы добавить, например, :path => 'u' в ваш оператор devise_for, чтобы разрабатывать маршруты сопоставлялись с /u и не конфликтуют с вашим UserController на /users. В качестве альтернативы вы можете оставить только devise_for (поэтому по-прежнему использовать /users) и вместо этого изменить свою маршрутизацию UserController, например, resources :users_admin, :controller => 'users', которая будет перемещать маршруты UsersControllers для отображения на /users_admin. Обратите внимание, что это изменит помощники пути от, например, от users_path до users_admin_path.

UPDATE

Следуя вашим комментариям/изменениям, я быстро просмотрел учебное пособие, и я думаю, что разработка в основном дает вам эквивалентную функциональность пользовательской функции, которая разработана в разделе 5.4 до раздела 9.1 или 9.2. (плюс некоторые дополнительные вещи, например, подтверждение по электронной почте, пароль reset, блокировка учетной записи и т.д.). Однако это не означает, что это замена для этой функции, если вы хотите попробовать и объединить Devise с этим учебником. Есть некоторые вещи, которые выглядят так, как будто они будут работать (например, Devise также определяет метод current_user), но маршруты и т.д. Были бы разными, и разрабатывать расщепляются вещи на большее количество контроллеров (отдельные контроллеры для регистрации, входа/выхода, пароль reset...). Функциональность администратора (как в разделах 2.2, 9.3, 9.4 - создание/редактирование/удаление/список других пользователей) - это то, что я добавил в моем приложении отдельный UserController. Devise не определяет UserController, но использует маршруты users, если вы выполняете devise_for :users без пути, как я упоминал выше.

Итак, более конкретно:

  • Вам понадобится только UserController, если вы хотите включить функции администратора, позволяющие просматривать/редактировать/удалять всех пользователей.
  • Если вы хотите использовать урок в учебнике, ему, вероятно, потребуется какая-то работа, чтобы массировать вещи, чтобы соответствовать, меняя вспомогательные ссылки на страницах и т.д. Извините, я не более конкретный; Я не сделал этого урока.

Вам не хватало бы дополнительного понимания, которое приходит от всего этого, вручную, но разработка - популярный движок, так что хорошо знать. Если у вас есть время, вы можете сделать учебник полностью, а затем снова с помощью! Это поможет вам понять, что некоторые из подобных вещей делают за кулисами. P.S: Можно поучительно посмотреть на исходный код разработки, даже если вы не сразу все поняли.