Pregunta Rieles: ¿de dónde viene el infame "usuario_actual"?


He estado buscando recientemente en Rails y he notado que hay muchas referencias a current_user. ¿Esto solo viene de Devise? y ¿tengo que definirlo manualmente yo mismo incluso si uso Devise? ¿Hay requisitos previos para usar current_user (como la existencia de sesiones, usuarios, etc.)?


76
2017-10-04 03:41


origen


Respuestas:


Está definido por varias gemas, p. Idear

Necesitará almacenar el user_id en algún lugar, generalmente en la sesión después de iniciar sesión. También asume que su aplicación tiene y necesita usuarios, autenticación, etc.

Por lo general, es algo así como:

class ApplicationController < ActionController::Base
  def current_user
    return unless session[:user_id]
    @current_user ||= User.find(session[:user_id])
  end
end

Esto supone que la clase de usuario existe, p. #{Rails.root}/app/models/user.rb.

Actualizado: evitar consultas adicionales de la base de datos cuando no hay un usuario actual.


65
2017-10-04 03:48



Sí, current_user usos session. Puede hacer algo similar en su controlador de aplicación si desea pasar su propia autenticación:

def current_user
  return unless session[:user_id]
  @current_user ||= User.find(session[:user_id])
end

7
2017-10-04 03:51