Индивидуальная регистрация устройства
Я пытаюсь создать приложение с devise auth, но хочу использовать Inertia + VueJS вместо представлений Rails. Мне сложно выполнить эту работу, пока что я создал настраиваемые контроллеры, используяrails generate devise:controllers users
Контроллер регистрации
class Users::RegistrationsController < Devise::RegistrationsController
before_action :configure_sign_up_params, only: [:create]
layout false
# POST /resource
def create
super
end
protected
# If you have extra params to permit, append them to the sanitizer.
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
end
end
Файл маршрутов
Rails.application.routes.draw do
devise_for :users, skip: :registrations
devise_scope :user do
post 'sign_up', to: 'users/registrations#create'
end
root 'home#index'
end
Контроллер приложений
class ApplicationController < ActionController::Base
before_action :authenticate_user!
protect_from_forgery prepend: true
end
Версия Ruby: 2.6.5, Версия Rails: 6.0.3.2
Я использую Insomnia для выполнения запросов, я передаю только json с именем, электронной почтой, паролем и подтверждением пароля. Это ответ, который я получил от бессонницы.
1 ответ
Это потому, что вы создаете собственный путь для регистрации пользователя, но по-прежнему используете значение по умолчанию devise
наследование контроллера по вызову super
которые используют помощник маршрутов по умолчанию в некоторых внутренних функциях.
Самый простой способ исправить это - использовать devise вместо создания собственных маршрутов.
Удалить это
devise_scope :user do
post 'sign_up', to: 'users/registrations#create'
end
И изменить devise_for
devise_for :users, controllers: {
registrations: 'users/registrations'
}