Индивидуальная регистрация устройства

Я пытаюсь создать приложение с 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'
}
Другие вопросы по тегам