[RUBY] [Rails] Comment utiliser l'appareil (Remarque)

introduction

Jusqu'à présent, j'avais implémenté des fonctions d'authentification telles que la connexion et la déconnexion par moi-même, mais j'aimerais utiliser la conception lors de la création d'un portefeuille cette fois, je laisserai donc cet article pour vous rappeler comment l'utiliser.

Environnement d'exécution

Il a été confirmé que cet article fonctionne dans les environnements suivants. ruby 2.7.1 rails 6.0.3 devise 4.7.3

Installation

Ajouté à Gemfile. Je vais le traduire en japonais dans la seconde moitié, donc j'inclurai également ce bijou.

Gemfile


gem 'devise'
gem 'devise-i18n'
gem 'devise-i18n-views'

Exécutez bundle install.

$ bundle install

définir les paramètres

Créez des fichiers associés.

$ rails g devise:install

Ensuite, un fichier sera créé et le texte anglais suivant sera affiché.

Running via Spring preloader in process 5911
      create  config/initializers/devise.rb
      create  config/locales/devise.en.yml
===============================================================================

Depending on your application's configuration some manual setup may be required:

  1. Ensure you have defined default url options in your environments files. Here
     is an example of default_url_options appropriate for a development environment
     in config/environments/development.rb:

       config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

     In production, :host should be set to the actual host of your application.

     * Required for all applications. *

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root to: "home#index"
     
     * Not required for API-only Applications *

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>

     * Not required for API-only Applications *

  4. You can copy Devise views (for customization) to your app by running:

       rails g devise:views
       
     * Not required *

===============================================================================
  1. Définissez l'option d'url par défaut dans le fichier d'environnement.

config/environments/development.rb


config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  1. Définissez l'URL racine.

config/routes.rb


root to: 'homes#index'
  1. Écrivez ce qui suit à l'endroit où vous souhaitez afficher le flash.
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
  1. La personnalisation de la vue sera décrite plus loin.

Créer un modèle utilisateur

$ rails g devise User

En regardant le fichier de migration créé, il n'y a que l'email et le mot de passe, alors ajoutez les colonnes que vous souhaitez ajouter. Après l'ajout, exécutez la migration.

$ rails db:migrate

À ce stade, ouvrez http: // localhost: 3000 / users / sign_up et une nouvelle page d'inscription sera créée. Si vous oubliez d'ajouter une colonne et que vous souhaitez l'ajouter plus tard, exécutez ce qui suit. (Cette fois, nous supposerons l'ajout de la colonne nom d'utilisateur)

$ rails g migration add_username_to_users username:string

Assurez-vous de saisir le nom d'utilisateur, ajoutez donc une contrainte NOT NULL.

db/migrate/XXXXXXXXXXXXXX_add_username_to_users.rb


class AddUsernameToUsers < ActiveRecord::Migration[6.0]
  def change
    add_column :users, :username, :string, null: false
  end
end

Créer une vue pour concevoir

Je souhaite personnaliser la vue, alors exécutez ce qui suit.

$ rails g devise:views users

Reflète le contenu modifié de la vue.

config/initializers/devise.rb


#Config en ligne 247.scoped_views =Décommenter false et passer à true
config.scoped_views = true

Permet aux noms d'utilisateur d'être enregistrés lors de l'inscription.

app/controllers/application_controller.rb


class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
  end
end

Créer un contrôleur et modifier le routage

$ rails g devise:controllers users

Le fichier du contrôleur et le texte en anglais s'affichent.

Running via Spring preloader in process 9004
      create  app/controllers/users/confirmations_controller.rb
      create  app/controllers/users/passwords_controller.rb
      create  app/controllers/users/registrations_controller.rb
      create  app/controllers/users/sessions_controller.rb
      create  app/controllers/users/unlocks_controller.rb
      create  app/controllers/users/omniauth_callbacks_controller.rb
===============================================================================

Some setup you must do manually if you haven't yet:

  Ensure you have overridden routes for generated controllers in your routes.rb.
  For example:

    Rails.application.routes.draw do
      devise_for :users, controllers: {
        sessions: 'users/sessions'
      }
    end

===============================================================================

Vérifions le routage actuel ici.

$ rails routes

Prefix               Verb   URI Pattern                          Controller#Action
new_user_session     GET    /users/sign_in(.:format)             devise/sessions#new
user_session         POST   /users/sign_in(.:format)             devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format)            devise/sessions#destroy
...
new_user_registration GET    /users/sign_up(.:format)       devise/registrations#new

Si la partie Controller # Action est la conception / les enregistrements, la conception / les sessions comme celle-ci, la méthode à définir ne sera pas reflétée.

Remplacez l'itinéraire en fonction du texte anglais qui était affiché lorsque vous avez créé le contrôleur.

config/routes.rb


devise_for :users, controllers: {
    registrations: 'users/registrations',
    sessions: 'users/sessions'
  }

Maintenant que nous l'avons remplacé, vérifiez le routage actuel.

$ rails routes

Prefix               Verb   URI Pattern                    Controller#Action
new_user_session     GET    /users/sign_in(.:format)       users/sessions#new
user_session         POST   /users/sign_in(.:format)       users/sessions#create
destroy_user_session DELETE /users/sign_out(.:format)      users/sessions#destroy
...
new_user_registration GET    /users/sign_up(.:format)      users/registrations#new                   

Vous pouvez maintenant personnaliser le contrôleur. Définissez la méthode.

app/controllers/users/registrations_controller.rb


  #Rediriger la destination après avoir créé un compte
  def after_sign_up_path_for(resource)
    root_path
  end

  #Rediriger la destination après avoir modifié le compte
  def after_update_path_for(resource)
    root_path
  end

app/controllers/users/sessions_controller.rb


  #Rediriger la destination après la déconnexion
  def after_sign_out_path_for(resource)
    root_path
  end

  #Rediriger la destination après la connexion
  def after_sign_in_path_for(resource)
    root_path
  end

Maintenant, toutes les destinations de redirection sont sur la première page.

Traduire en japonais

Tout d'abord, définissez la langue par défaut de cette application Rails sur le japonais.

config/application.rb


require_relative 'boot'
require 'rails/all'

Bundler.require(*Rails.groups)

module ConnectStudy
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 6.0
  
    config.i18n.default_locale = :ja #Ajouter ici
  end
end

Générez un fichier de traduction japonais pour la devise.

$ rails g devise:views:locale ja

Ce sera en japonais. N'oubliez pas de redémarrer le serveur lorsque vous modifiez la configuration.

concevoir propose également de nombreuses méthodes d'aide utiles, je voudrais donc les utiliser pour développer efficacement des applications.

Recommended Posts

[Rails] Comment utiliser l'appareil (Remarque)
[Note] Comment utiliser Rails 6 Devise + cancancan
[Rails] Comment utiliser la "devise" des gemmes
[Rails] Comment utiliser enum
[Rails] Comment utiliser enum
Comment utiliser la jonction de rails
[Rails] Comment utiliser la validation
[Rails] Comment utiliser authenticate_user!
[Rails] Comment utiliser Scope
[Rails] Comment utiliser les messages flash
[rails] Comment utiliser la méthode d'assistance de devise before_action: authenticate_user!
Comment utiliser Ruby on Rails
[Rails] Comment utiliser Active Storage
[Introduction aux rails] Comment utiliser le rendu
[Rails] Comment utiliser ActiveRecord :: Bitemporal (BiTemporalDataModel)
[Rails] Comment utiliser la méthode de la carte
Comment utiliser MySQL dans le didacticiel Rails
Comment utiliser la classe Java Scanner (Remarque)
[Ruby on Rails] Comment utiliser redirect_to
[Rails] Comment utiliser video_tag pour afficher des vidéos
Ruby: CSV :: Comment utiliser la note de tableau
[Rails] Comment utiliser la méthode d'assistance, confimartion
Comment utiliser credentials.yml.enc introduit à partir de Rails 5.2
[Rails] Comment traduire la devise en japonais
Comment utiliser Map
Comment écrire des rails
Comment utiliser rbenv
Comment utiliser with_option
Comment utiliser fields_for
Comment utiliser java.util.logging
Comment utiliser la carte
Comment utiliser collection_select
Comment utiliser Twitter4J
Comment utiliser active_hash! !!
Comment utiliser MapStruct
Comment utiliser TreeSet
Comment désinstaller Rails
[Comment utiliser l'étiquette]
Comment utiliser l'identité
Comment utiliser le hachage
Comment utiliser Dozer.mapper
Comment utiliser Gradle
Comment utiliser org.immutables
Comment utiliser java.util.stream.Collector
Comment utiliser VisualVM
Comment utiliser Map
[Rails] Comment utiliser les boîtes de sélection dans Ransack
Comment utiliser les rails g échafaudage, fonctions, précautions
Remarquez comment utiliser Swift Super Basic TableView
Comment utiliser le contrôle segmenté et les points à noter
Comment utiliser JQuery dans Rails 6 js.erb