Как вручную создавать пользователей с помощью Devise

В моем приложении rails я использую devise для регистрации пользователей. Теперь, помимо регистрации пользователей, администраторы также должны создавать, редактировать и удалять пользователей в бэкэнде. У меня проблема с созданием новых пользователей через этот сервер администратора.

Когда я вызываю действие UsersController#new в своем браузере, оно открывает созданную мной форму ввода пользователя. Когда я нажимаю кнопку отправки, вызывается Devise::RegistrationsController#create, но он должен вызывать мое действие UsersController#create.

Как я могу вызывать UsersController#create при использовании создания пользователя в админке и вызывать Devise::RegistrationsController#create, когда пользователь использует регистрацию?


person Michael Stark    schedule 12.05.2012    source источник


Ответы (2)


1) добавьте префикс пути к разработке: devise_for :users, :path_prefix => 'd'

2) запустить rake routes:

user_registration POST   /d/users(.:format)   devise/registrations#create
...
users POST   /users(.:format)  users#create

Итак, первый маршрут для Devise::RegistrationsController, второй для вашего UsersController.

А можно просто использовать в admin/new_user.html.erb: form_for User.new

person Mik    schedule 12.05.2012

На обратной стороне ответа Михаила вы также можете указать devise использовать любой другой путь вместо «пользователей». Например:

devise_for :users, path: 'auth'

приведет к разработке маршрутов, таких как /auth/sign_up, /auth/sign_in и т. д. И ваши пользовательские маршруты будут безопасными.

(Полный список опций devise_for можно найти здесь )

person Alexis    schedule 14.01.2015