RoR中覆盖devise-security的paranoid_verification_code控制器不生效问题
问题原因
你在devise_for的controllers配置段使用了错误的映射键名。devise-security的paranoid_verification模块注册路由时,对应的控制器映射键是paranoid_verification_code,而非你填写的verification_code,导致自定义控制器配置没有生效,路由默认指向gem内置的控制器。
修复方案
修改路由配置中devise_for的controllers部分,将键名修正为paranoid_verification_code即可,修改后的配置参考如下:
devise_for :users, path: '', path_names: { sign_in: 'signin', registration: 'signup', confirmation: 'verification', }, controllers: { sessions: 'users/sessions', registrations: 'users/registrations', confirmations: 'users/confirmations', passwords: 'users/passwords', invitations: 'users/invitations', # 修正此处的键名 paranoid_verification_code: 'users/paranoid_verification_code', }, skip: [:unlocks, :omniauth_callbacks, :saml_authenticatable], defaults: { format: :json }
修改完成后重启Rails服务,再执行路由查询命令rails routes(也兼容旧版rake routes),即可看到对应路由已经指向你自定义的控制器。
内容的提问来源于stack exchange,提问作者nanakondor
相关产品推荐
相关产品推荐

