首页 > 解决方案 > 在 Ruby on Rails 中注册后将用户重定向到

问题描述

我正在尝试一个 Ruby on Rails 挑战,我必须创建一个工作委员会。我正在使用设计来处理帐户,并且我的用户模型具有角色属性,其中包含“申请人”和“雇员”作为枚举中声明的选项。在这个挑战中,当有人以员工身份创建帐户时,我必须检查公司域是否已经存在(该域是从员工电子邮件中提取的),如果不存在,则必须将员工重定向到注册页面公司。此外,该员工成为公司的管理员(我为此使用了 admin 标志)。我的问题是进行适当的测试并使重定向正常工作。

到目前为止我的代码:

我重写的设计的registrations_controller.rb:

class Users::RegistrationsController < Devise::RegistrationsController
  def after_sign_up_path_for(resource)
    if resource.role == 1
      redirect_to new_company_path
    else
      redirect_to new_user_session_path
    end
  end
   
  # POST /resource
  def create
    @user = User.new(user_params)
    if @user.save 
      after_sign_up_path_for(@user)
    else
      render :new
    end    
  end

在 user.rb 中,我创建了提取域并测试它是否已经存在的方法:

class User < ApplicationRecord
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
         
  enum role: { applicant: 0, employee: 1 }
  
  def get_domain
    @user.email.gsub(/.+@([^.]+).+/, '\1')
  end

  def new_domain?(get_domain)
    Company.all.domain.include?(get_domain)
  end
end

这是我在 application_controller 上的消毒剂:

class ApplicationController < ActionController::Base
    before_action :configure_permitted_parameters, if: :devise_controller?

    protected

    def configure_permitted_parameters
      devise_parameter_sanitizer.permit(:sign_up) do |user_params|
        user_params.permit(:role, :email, :password, :password_confirmation)
      end
    end
end

但是,在注册员工帐户后,我被重定向到登录页面。我究竟做错了什么?

标签: ruby-on-railsdevise

解决方案


推荐阅读