Я использую Devise в приложении Rails 3, но в этом случае пользователь должен быть создан существующим пользователем, который определяет, какие разрешения он/она будет иметь.
Из-за этого я хочу:
- Чтобы удалить маршрут для подписки.
- Чтобы разрешить пользователям редактировать свои профили (изменить адрес электронной почты и пароль) после, они зарегистрировались
Как я могу это сделать?
В настоящее время я эффективно удаляю этот маршрут, поставив перед devise_for :users
следующее:
match 'users/sign_up' => redirect('/404.html')
Это работает, но я думаю, что лучший способ, верно?
Update
Как сказал Бенуа Гаррет, лучшим решением в моем случае является пропустить создание маршрутов регистрации в массе и просто создать те, которые я действительно хочу.
Для этого я сначала запустил 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: ''
}