Cómo detener el inicio de sesión del usuario eliminado con Devise

Actualmente uso Devise para el registro / autenticación de usuarios en un proyecto Rails. Cuando un usuario desea cancelar su cuenta, el objeto de usuario se elimina de forma suave de la siguiente manera.

Cómo "eliminar suavemente" al usuario con Devise

Mi implicación tiene una pequeña diferencia de esta manera. El modelo de usuario tiene un atributo 'deleted_flag'. Y, el método soft_delete ejecuta "update_attribtue (: deleted_flag, true)"

Pero, tengo que implicar la acción sign_in. En mi implicación es lo siguiente.

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

Creo que este código tiene puntos extraños.

Si el usuario eliminado intenta cantar, el sistema permite iniciar sesión y cerrar sesión inmediatamente. Y, el sistema no puede mostrar el mensaje flash [: alerta] ...

Quiero saber dos puntos.

¿Cómo implemento para prohibir que los usuarios eliminados inicien sesión?¿Cómo implemento para mostrar flash [: alerta] cuando el usuario eliminado intenta iniciar sesión?

Respuestas a la pregunta(3)

Su respuesta a la pregunta