Rails devise не перенаправляет на корневой путь - PullRequest
0 голосов
/ 17 мая 2018

Моя user модель выглядит следующим образом: type - это столбец в таблице user, а std используется только для получения дополнительных данных во время входа пользователя sign_up.Отрисованная страница входа с успешным входом в систему сообщения не отображает 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

Devise :: 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

1 Ответ

0 голосов
/ 17 мая 2018

Решено .. Я думаю, что это также проверяет user(type:Student) во время входа в систему, поэтому я просто добавил

validates_presence_of :std , allow_blank: false , if: -> { type == 'Student' and new_record? },
                         message: 'Student must add grade to continue'

Теперь это проверяется только во время регистрации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...