[RUBY] [Rails] Conservation temporaire des données par session

introduction

session est utilisée lors du déplacement vers la destination de la transition tout en conservant les données au "format de l'assistant", etc.

table des matières

  1. À propos de la session
  2. Exemple de mise en œuvre
  3. Enfin

1. À propos de la session

Une session est un mécanisme de stockage temporaire d'informations. Dans Rails, une session stocke des données dans un objet appelé session sous la forme d'un hachage.

Par exemple, supposons un site où la page change lorsque vous vous inscrivez en tant que membre. Dans ce cas, il est nécessaire de stocker temporairement les informations saisies à l'aide de la session dans la session, de passer à la page suivante et de la développer.

2 Exemple de mise en œuvre

supposition

En principe, il est supposé que les informations sur les membres sont enregistrées lors de la transition des pages à l'aide de devise.

Environnement de développement

ruby 2.6.5 rails 6.0.0 devise 4.7.3

2.1 Conservation des données

Implémentons-le!

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

J'ai écrit diverses autres choses, mais je ferai attention à la session.

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

{user: @ user.attributes} utilise la méthode des attributs pour formater les données lorsque vous voulez que la session contienne des informations sous la forme d'un objet de hachage.

En d'autres termes, les données @user attribuées sont dans la session dans un état haché. Les informations d'entrée sont maintenant affectées à la session ["devise.regist_data"] et sont conservées.

2.2 Déployer

Ensuite, la page est transférée et développée tout en conservant les données.

registrations_controller.rb


class Users::RegistrationsController < Devise::RegistrationsController

#réduction
 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

Ceci est également décrit de différentes manières, mais faites attention à @user en haut.

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

Décrit la session ["devise.regist_data"] ["user"]. Si vous avez des données avec {user: 〇〇}, vous devez utiliser ["user"]. De plus, étant donné que la session contient des informations dans un tableau, vous pouvez également avoir des informations comme suit. session["devise.regist_data"] = {user: @user.attributes, address: @user.address}

Avec cela, la session peut être étendue sur la page de destination de la transition et attribuée à @user.

Après cela, vous pouvez enregistrer en utilisant les données attribuées à @user.

Résumé

Cette fois, j'ai présenté comment utiliser la session lors de l'utilisation de devise au "format assistant".

finalement

Je suis un débutant en programmation, mais je publie un article dans l'espoir qu'il aidera les gens qui sont également en difficulté. A la prochaine fois ~

Recommended Posts

[Rails] Conservation temporaire des données par session
[Rails] Introduction de Rubocop par les débutants
[Ruby on Rails] Introduction des données initiales
Le contenu des données enregistrées par CarrierWave.
[Order method] Définit l'ordre des données dans Rails
Implémentation de la fonction de connexion Ruby on Rails (Session)
Résumé des connaissances de base des rails acquises par progate
[Rails] Affichage des données de structure à plusieurs niveaux à l'aide de la boîte de sélection
Une revue du code utilisé par les rails débutants
[Rails] Ajout de colonnes / changement de type de données / nom de colonne
Rails6: saisissez les données initiales d'ActionText à l'aide de seed
[Rails] Présentation de PAY.JP
[Débutant] À propos de la session Rails
[Rails] Enregistrez-vous par attribut du même modèle en utilisant Devise
Mémo d'analyse par l'analyseur SAX du modèle de données RDF / XML
[Rails] Comment afficher une liste de messages par catégorie