Я использую 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: ''
}
