Rails设计不会重定向到根路径
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails设计不会重定向到根路径相关的知识,希望对你有一定的参考价值。
我的user
模型看起来像这样type
是user
表中的列,而std
仅用于在用户sign_up时获取其他数据。现在当user(type: Student)
登录时,设计再次呈现登录页面,消息日志成功不会呈现root_path
和日志中它显示回滚事务,但当我刷新页面然后它呈现给root_path
。这个问题只发生在type:Student
,当我删除validates_presence_of :std
线时,一切都运行得很好。
现在问题是为什么会发生这种情况或者如何做到这一点?
class User < ApplicationRecord
attr_accessor :std
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates_presence_of :type
validates_presence_of :std , allow_blank: false , if: -> { type == 'Student' },
message: 'Student must add grade to continue'
end
设计:: RegistrationsController.rb
class RegistrationsController < Devise::RegistrationsController
def create
super
if params[:user][:type] == 'Student' and user_signed_in?
current_user.grade = Grade.new({cls: params[:user][:std].to_i})
current_user.save
end
end
private
def sign_up_params
params.require(:user).permit(:email, :password, :password_confirmation, :type, :std)
end
end
答案
解决..我认为它也验证user(type:Student)
at登录时间,所以我刚刚添加
validates_presence_of :std , allow_blank: false , if: -> { type == 'Student' and new_record? },
message: 'Student must add grade to continue'
现在它仅在注册时进行验证。
以上是关于Rails设计不会重定向到根路径的主要内容,如果未能解决你的问题,请参考以下文章