Я використовую 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_for :users, path_names: {
sign_up: ''
}
https://example.com/users/
. Дивіться мою відповідь нижче.