ruby-on-rails - 在 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
但是,在注册员工帐户后,我被重定向到登录页面。我究竟做错了什么?
解决方案
推荐阅读
- python - 从字典到 Excel 表的值
- excel - 查找包含文件的文件夹 (VBA)
- continuous-integration - 为 xaml 文件构建管道
- c# - 在 C# 中将视图组件的结果作为字符串返回
- javascript - 无法使用 jQuery 选择 Angular Dropdown 值
- java - Android 数据绑定:多次调用自定义绑定适配器时,生成的代码中缺少返回语句
- python - 计算列中大于 x 但小于 y 的元素数
- c++ - C++:如何从 WLAN_BSS_ENTRY 打印 dot11Bssid?
- c# - 用于 ??如果对象不为空,则获取对象的属性
- matlab - 如何在 matlab 中证明 randperm() 是公平的