Я использую 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 по умолчанию; то есть:
devise_for :users, path_names: {
sign_up: ''
}
https://example.com/users/
. Смотрите мой ответ ниже.