3 Stimmen

Sitzungsdaten in Rails abrufen

Ich bin neu zu Rails von php kommen, und ich bin Rails 3 mit Mongodb lernen.

Ich habe den Punkt erreicht, wo ich ein HTML-Formular Post Text zu Mongo haben, und ich kann erstellen und als Benutzer anmelden.

In der Benutzeranmeldung erstelle ich eine Sitzung mit wie von nifty authenticate erstellt

session[:user_id] = user.id

Jetzt versuche ich, die user_id aus der Sitzung zu erhalten, wenn ich einen neuen Beitrag erstelle, damit der Beitrag mit dem Benutzer verbunden ist.

in meinem posts_controller habe ich die Funktion create wie folgt.

def create
    @post = Post.new(params[:post])
    respond_to do |format|
      if @post.save
        format.html { redirect_to(@post, :notice => 'Post was successfully created.') }
        format.xml  { render :xml => @post, :status => :created, :location => @post }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @post.errors, :status => :unprocessable_entity }
      end
    end
end

jedoch ich glaube, ich muss die user_id hier übergeben, oder vielleicht wäre es besser, es in meinem Modell zu setzen.

Aber der Versuch, irgendeine Art von

@user_id = session[:user_id]

hat nichts Sinnvolles ergeben. Gehe ich die Sache falsch an?

Ich habe Beiträge gesehen, die das Speichern von Sitzungen in der Datenbank beschreiben, aber ich sehe nicht wirklich, warum dies für etwas so einfaches wie das Abrufen der aktuell eingeloggten user_id notwendig sein sollte.

1voto

mike Punkte 3089

Wenn Sie nur den Benutzer, der den Beitrag erstellt hat, in Ihrer Beitragsdatenbank verfolgen möchten? Innerhalb des Beitragsmodells kann eine einfache:

gehört zu: Benutzer

funktionieren sollte. Solange Sie auch ein user_id-Feld in Ihrer Post-DB haben (Ich bin mir nicht ganz sicher, ob es das ist, wonach Sie gefragt haben).

1voto

sosborn Punkte 14586

Schauen Sie sich die Dokumente an: Geschickte Authentifizierung

Nifty Authentication enthält eine Methode namens current_user (die meisten Authentifizierungslösungen für Rails folgen der gleichen Namenskonvention), die genau das tut, was sie sagt: den aktuellen Benutzer ermitteln. Sie könnten also folgendes tun:

post.user = current_user

EDITAR Dies kann nur geschehen, nachdem Sie die richtige Beziehung hergestellt haben, wie von Mike beschrieben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X