Ich folgte einem Tutorial auf Rails Formen (Login, Logout). Alles ging gut, außer für dieses Bit: Sobald ein Benutzer sich angemeldet hat, sollte der untere Teil der Seite sagen "Sie sind eingeloggt als" gefolgt von einer E-Mail-Adresse, so wird zum Beispiel sagen: "Sie sind als Jane eingeloggt @ aol.com ". Die Codezeile responsbile dafür:Wie kann "current_user" (codiert als `session [: user_id]`) Benutzer-E-Mail anstelle von irgendeinem seltsamen Code anzeigen?
<p>You are logged in as: <%= @current_user %></p>
Doch was ich stattdessen bekommen ist You are logged in as: #<User:000s500r00k000h0>
(keine exakte Kopie)
Für das Leben von mir, ich kann nicht herausfinden, was diese Zahl ist und warum der E-Mail des Benutzers nicht angezeigt-nor, wo die Fehlersuche beginnen:
current_user
definiert in Application:
class ApplicationController < ActionController::Base protect_from_forgery with: :exception
def authentication_required if !logged_in? redirect_to login_path end end
def logged_in? !!current_user end
def current_user @current_user ||= begin User.find(session[:user_id]) if session[:user_id] end end helper_method :current_user end
Die user_id
sollte die E-Mail des Benutzers sein. Was habe ich verpasst?
Vielen Dank! Der Grund, warum ich dieses 'current_user'-Problem herausfinden möchte, ist: Das Tutorial demonstrierte sicheres Anmelden/Abmelden und wie man bestimmte Informationen privat hält (oder vor Hacking schützt) - also' current_user' anstelle von 'user.email' (obwohl ehrlich gesagt habe ich nicht genug gelernt, um alles zu verstehen). Und das Tutorial zeigt die E-Mails des eingeloggten Benutzers. – YCode
Die E-Mail wird immer nur für einen angemeldeten Benutzer angezeigt, wie die before_action: authentication_required leitet alle Personen um, die nicht eingeloggt sind. –