[RUBY] [Rails] Temporäre Aufbewahrung von Daten pro Sitzung

Einführung

Die Sitzung wird verwendet, wenn zum Übergangsziel gewechselt wird, während Daten im "Assistentenformat" usw. gespeichert werden.

Inhaltsverzeichnis

  1. Über die Sitzung
  2. Implementierungsbeispiel
  3. Schließlich

1. Über die Sitzung

Eine Sitzung ist ein Mechanismus zum vorübergehenden Speichern von Informationen. In Rails speichert eine Sitzung Daten in Form eines Hashs in einem Objekt namens session.

Angenommen, eine Site, auf der sich die Seite ändert, wenn Sie sich als Mitglied registrieren. In diesem Fall müssen die mit der Sitzung eingegebenen Informationen vorübergehend in der Sitzung gespeichert, zur nächsten Seite gewechselt und dort erweitert werden.

2 Implementierungsbeispiel

Annahme

Als Voraussetzung wird angenommen, dass Mitgliederinformationen beim Übergang von Seiten mit devise gespeichert werden.

Entwicklungsumgebung

ruby 2.6.5 rails 6.0.0 devise 4.7.3

2.1 Vorratsdatenspeicherung

Lassen Sie es uns implementieren!

registrations_controller.rb


class Users::RegistrationsController < Devise::RegistrationsController

  def new
    @user = User.new
  end

  def create
    @user = User.new(sign_up_params)
      unless @user.valid?
        render :new and return
      end
    session["devise.regist_data"] = {user: @user.attributes}
    @address = @user.build_address
    render "new_address"
  end

Ich habe verschiedene andere Dinge geschrieben, aber ich werde auf die Sitzung achten.

session["devise.regist_data"] = {user: @user.attributes} 

{user: @ user.attributes} verwendet die Attributmethode, um die Daten zu formatieren, wenn die Sitzung Informationen in Form eines Hash-Objekts enthalten soll.

Mit anderen Worten, die zugewiesenen @ user-Daten befinden sich in der Sitzung in einem gehashten Zustand. Die Eingabeinformationen werden jetzt der Sitzung ["devise.regist_data"] zugewiesen und bleiben erhalten.

2.2 Bereitstellen

Als nächstes wird die Seite unter Beibehaltung der Daten überführt und erweitert.

registrations_controller.rb


class Users::RegistrationsController < Devise::RegistrationsController

#Kürzung
 def create_address
    @user = User.new(session["devise.regist_data"]["user"])
    @address = Address.new(useraddress_params)
      if @address.valid?
        @user.build_address(@address.attributes)
        @user.save
          session["devise.regist_data"]["user"].clear
          sign_in(:user, @user)
      else
        render "new_address"
      end
  end

Dies wird auch auf verschiedene Arten beschrieben, aber achten Sie oben auf @user.

@user = User.new(session["devise.regist_data"]["user"])

Beschreibt die Sitzung ["devise.regist_data"] ["user"]. Wenn Sie Daten mit {user: 〇〇} haben, müssen Sie ["user"] verwenden. Da die Sitzung Informationen in einem Array enthält, können Sie auch Informationen wie folgt haben. session["devise.regist_data"] = {user: @user.attributes, address: @user.address}

Damit kann die Sitzung auf der Übergangszielseite erweitert und @user zugewiesen werden.

Danach können Sie mit den @user zugewiesenen Daten speichern.

Zusammenfassung

Dieses Mal habe ich die Verwendung von Sitzungen bei der Verwendung von Geräten im "Assistentenformat" vorgestellt.

Schließlich

Ich bin ein Anfänger in der Programmierung, aber ich poste einen Artikel in der Hoffnung, dass er Menschen hilft, die ähnlich in Schwierigkeiten sind. Bis zum nächsten Mal ~

Recommended Posts

[Rails] Temporäre Aufbewahrung von Daten pro Sitzung
[Rails] Einführung von Rubocop durch Anfänger
[Ruby on Rails] Einführung der Anfangsdaten
Der Inhalt der von CarrierWave gespeicherten Daten.
[Bestellmethode] Legen Sie die Reihenfolge der Daten in Rails fest
Implementierung der Ruby on Rails-Anmeldefunktion (Sitzung)
Zusammenfassung der Grundkenntnisse von Rails, die von progate erworben wurden
[Schienen] Anzeige von mehrstufigen Strukturdaten über das Auswahlfeld
Eine Überprüfung des von Rails-Anfängern verwendeten Codes
[Rails] Hinzufügen von Spalten / Änderung des Datentyps / Spaltennamens
Rails6: Geben Sie die Anfangsdaten von ActionText mit seed ein
[Rails] Einführung von PAY.JP
[Anfänger] Über Rails Session
[Rails] Registrieren Sie sich mit Devise nach Attributen desselben Modells
Notiz zum Parsen des RDF / XML-Datenmodells durch den SAX-Parser
[Rails] So zeigen Sie eine Liste der Beiträge nach Kategorie an