Я использую Devise в приложении Rails 3, но в этом случае пользователь должен быть создан существующим пользователем, который определяет, какие разрешения он / она будет иметь.
Из-за этого я хочу:
- К удалить маршрут для регистрации пользователей .
- Кому все еще позволяют пользователям редактировать свои профили (изменить адрес электронной почты и пароль) после они зарегистрировались
Как я могу это сделать?
В настоящее время я удаляю этот маршрут, поместив перед devise_for :users
следующую строку:
match 'users/sign_up' => redirect('/404.html')
Это работает, но я думаю, что есть лучший способ, верно?
Обновление
Как сказал Бенуа Гаррет, лучшее решение в моем случае - это пропустить создание массовых маршрутов регистрации и просто создать те, которые я на самом деле хочу.
Для этого я сначала запустил rake routes
, а затем использовал выходные данные, чтобы воссоздать те, которые я хотел. Конечный результат был таким:
devise_for :users, :skip => [:registrations]
as :user do
get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
put 'users' => 'devise/registrations#update', :as => 'user_registration'
end
Обратите внимание, что:
- У меня все еще есть
:registerable
в моей User
модели
devise/registrations
обрабатывает обновление электронной почты и пароля
- Обновление других пользовательских атрибутов - разрешений и т. Д. - выполняется другим контроллером
Фактический ответ:
Удалить маршрут для путей Devise по умолчанию; i.e.:
devise_for :users, path_names: {
sign_up: ''
}