Как и вы, я хотел, чтобы пользователь с правами администратора мог добавлять новых пользователей. Но я не хотел связываться с Devise Registerable, так как на самом деле я хотел, чтобы пользователи все еще могли зарегистрироваться. У меня есть несколько администраторов с правами на добавление нового пользователя, поэтому я создал дополнительные методы в моем контроллере пользователей и дополнительные представления для обработки этого случая.
На мои дополнительные методы не ссылается prepend_before_filter: require_no_authentication от Devise, поэтому они не получают ошибку.
Мой рецепт:
В app / controllers / users_controller.rb (или любом другом объекте, для которого вы используете устройство):
Скопируйте новые, создайте и обновите методы и переименуйте копии в admin_new, admin_create и admin_update.
В app / views / users скопируйте new.html.erb в admin_new.html.erb. Измените частичное, указав вместо admin_form форму:
<%= render 'admin_form' %>
Затем скопируйте частичный _form.html.erb в _admin_form.html.erb. В _admin_form.html.erb измените form_for, чтобы использовать другой URL:
form_for(@user, :url => '/users/admin_create')
Добавьте маршруты в config / rout.rb, чтобы указать альтернативные методы в пользовательском контроллере:
devise_scope :user do
...
get 'users/admin_new' => 'users#admin_new'
post 'users/admin_create' => 'users#admin_create'
end
Теперь вы можете добавлять пользователей, когда вы вошли в систему, перейдя в / users / admin_new, и пользователи по-прежнему могут создавать своих собственных пользователей (зарегистрироваться), используя механизм разработки, который вас не беспокоил.