Хотя может быть сложнее получить пользователя, чем это. Я не играл с предварительной аутентификацией Devise.

тоящее время я использую Devise для регистрации / аутентификации пользователей в проекте Rails. Когда пользователь хочет удалить свою учетную запись, объект пользователя удаляется программным способом, как показано ниже.

Как «мягко удалить» пользователя с помощью Devise

Мое воплощение имеет небольшую разницу таким образом. Модель пользователя имеет атрибут «Удаленный_флаг». И, метод soft_delete выполняет "update_attribtue (: Удален_флаг, истина)"

Но я должен выполнить действие sign_in. В моем понимании следующее.

class SessionsController < Devise::SessionsController
  def create
    resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")    

    if resource.deleted_flag
      p "deleted account : " + resource.deleted_flag.to_s
      sign_out(resource)
      render :controller => :users, :action => :index
    else
      if is_navigational_format?
        if resource.sign_in_count == 1
          set_flash_message(:notice, :signed_in_first_time)
        else
          set_flash_message(:notice, :signed_in)
        end
      end
      sign_in(resource_name, resource)
      respond_with resource, :location => redirect_location(resource_name, resource)
    end
  end
end

Я думаю, что этот код имеет странные моменты.

Если удаленный пользователь попытается войти в систему, система разрешит войти в систему и сразу же выйти из системы. И система не может отображать flash [: alert] message ...

Я хочу знать два момента.

Как я могу реализовать запретить удаленным пользователям вход в систему?Как мне реализовать отображение flash [: alert], когда удаленный пользователь пытается войти?

Ответы на вопрос(3)

Ваш ответ на вопрос