92 votes

Rails: d'où vient l'infâme "current_user"?

J'ai récemment regardé autour de Rails et remarqué qu'il y a beaucoup de références à current_user . Cela vient-il seulement de Devise? et dois-je le définir moi-même manuellement même si j'utilise Devise? Existe-t-il des conditions préalables à l’utilisation de current_user (comme l’existence de sessions, d’utilisateurs, etc.)?

80voto

Erik Peterson Points 1768

Il est défini par plusieurs joyaux, par exemple, Devise

Vous aurez besoin de stocker l'utilisateur_id quelque part, généralement dans la session après la connexion. Cela suppose également que votre application possède et nécessite des utilisateurs, une authentification, etc.

Typiquement, c'est quelque chose comme:

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

Cela suppose que la classe User existe, par exemple #{Rails.root}/app/models/user.rb .

Mis à jour: évite les requêtes supplémentaires à la base de données lorsqu'il n'y a aucun utilisateur actuel.

10voto

Zach Kemp Points 7390

Oui, current_user utilise session . Vous pouvez faire quelque chose de similaire dans votre contrôleur d’application si vous voulez lancer votre propre authentification:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X