Frage Rails: Woher kommt der berüchtigte "current_user"?


Ich habe mich kürzlich in Rails umgeschaut und festgestellt, dass es viele Referenzen gibt current_user. Kommt das nur von Devise? und muss ich es selbst manuell definieren, auch wenn ich Devise verwende? Gibt es Voraussetzungen für die Verwendung? current_user (wie die Existenz von Sitzungen, Benutzern usw.)?


76
2017-10-04 03:41


Ursprung


Antworten:


Es wird durch mehrere Edelsteine ​​definiert, z.B. Entwickeln

Sie müssen die user_id irgendwo speichern, normalerweise in der Sitzung nach der Anmeldung. Sie geht auch davon aus, dass Ihre App Benutzer benötigt und Authentifizierung benötigt usw.

Normalerweise ist es etwas wie:

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

Dies setzt voraus, dass die Benutzerklasse existiert, z. #{Rails.root}/app/models/user.rb.

Aktualisiert: Vermeiden Sie zusätzliche Datenbankabfragen, wenn kein aktueller Benutzer vorhanden ist.


65
2017-10-04 03:48



Ja, current_user Verwendet session. Sie können in Ihrem Anwendungscontroller etwas Ähnliches tun, wenn Sie Ihre eigene Authentifizierung rollen möchten:

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

7
2017-10-04 03:51