Die Sitzung wird verwendet, wenn zum Übergangsziel gewechselt wird, während Daten im "Assistentenformat" usw. gespeichert werden.
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.
Als Voraussetzung wird angenommen, dass Mitgliederinformationen beim Übergang von Seiten mit devise gespeichert werden.
ruby 2.6.5 rails 6.0.0 devise 4.7.3
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.
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.
Dieses Mal habe ich die Verwendung von Sitzungen bei der Verwendung von Geräten im "Assistentenformat" vorgestellt.
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