[RUBY] [Débutant] Comment utiliser la conception Modifier les paramètres depuis l'introduction

introduction

J'ai utilisé un appareil pour étudier et créé une zone de connexion. Par défaut, il s'authentifie avec un nom d'utilisateur et un mot de passe, mais cette fois, nous modifierons le paramètre pour s'authentifier avec un numéro d'employé et un mot de passe.

environnement

Ruby 2.5.3 Ruby on Rails 5.2.4 Devise 4.7.1

Achevée

スクリーンショット 2020-06-24 16.00.39.png スクリーンショット 2020-06-24 16.00.56.png J'ai ajusté l'apparence avec bootstrap, mais je vais modifier les paramètres pour qu'il ressemble à ceci. # la mise en oeuvre

Gemfile


gem 'devise'
$ bundle install

● définir les paramètres

$ rails generate devise:install

Je reçois un message comme celui-ci. Comme je suis débutant, j'ai été surpris par le message d'erreur, mais si cela apparaît, c'est une réussite.

create  config/initializers/devise.rb
      create  config/locales/devise.en.yml
===============================================================================
 
Some setup you must do manually if you haven't yet:
 
  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:3000' }
 
 	In production, :host should be set to the actual host of your application.
 
  2. Ensure you have defined root_url to *something* in your config/routes.rb.
 	For example:
 
   	root :to => "home#index"
 
  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>
 
  4. You can copy Devise views (for customization) to your app by running:
 
   	rails g devise:views
 
===============================================================================

● Contenu du message

  1. Lorsque vous envoyez un e-mail d'authentification tel qu'une nouvelle inscription, définissez l'URL du lien d'approbation dans le texte de l'e-mail.

config/environments/development.rb


config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  1. Réglage de l'itinéraire Il est configuré pour accéder à l'itinéraire après l'enregistrement en tant que membre.

  2. Intégrez un message flash. Il est utilisé lorsque vous souhaitez afficher le flash lors de la connexion et de la déconnexion. Je l'ai intégré dans une vue commune.

app/views/layouts/application.html.erb


<body>
 <p class="notice"><%= notice %></p>
 <p class="alert"><%= alert %></p>
</body>
  1. Pour personnaliser la vue
$ rails g devise:views

● Modifier les paramètres de l'appareil

config/initializers/devise.rb


Autour de la 43e ligne
Spécifiez le numéro d'employé pour la clé d'authentification
- config.authentication_keys = [:email]
+ config.authentication_keys = [:employee_number]
Autour de la 55e ligne
Les valeurs de clé d'authentification sont insensibles à la casse
- config.case_insensitive_keys = [:email]
+ config.case_insensitive_keys = [:employee_number]
Autour de la 60e ligne
Débarrassez-vous des clés vierges
- config.strip_whitespace_keys = [:email]
+ config.strip_whitespace_keys = [:employee_number]

● Créer un modèle utilisateur

$ rails g devise user

app/models/user.rb


#Les trois méthodes suivantes utilisent le nom d'utilisateur comme clé d'authentification, donc
#Remplacer les méthodes inutiles et les désactiver.

def email_required?
    false
  end

  def email_changed?
    false
  end
  
  def will_save_change_to_email?
    false
  end

db/migrate/Date_devise_create_user.rb



class DeviseCreateUsers < ActiveRecord::Migration[5.2]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :employee_number,    null: false, default: ""
      t.string :encrypted_password, null: false, default: ""
## Recoverable
      t.string   :reset_password_token
      t.datetime :reset_password_sent_at

      ## Rememberable
      t.datetime :remember_created_at

      ## Trackable
      # t.integer  :sign_in_count, default: 0, null: false
      # t.datetime :current_sign_in_at
      # t.datetime :last_sign_in_at
      # t.string   :current_sign_in_ip
      # t.string   :last_sign_in_ip

      ## Confirmable
      # t.string   :confirmation_token
      # t.datetime :confirmed_at
      # t.datetime :confirmation_sent_at
      # t.string   :unconfirmed_email # Only if using reconfirmable

      ## Lockable
      # t.integer  :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
      # t.string   :unlock_token # Only if unlock strategy is :email or :both
      # t.datetime :locked_at
    t.timestamps null: false
    end

Changer ici!!
     - add_index :users, :email,      unique: true
     + add_index :users, :employee_number,      unique: true
      add_index :users, :reset_password_token, unique: true
    # add_index :users, :confirmation_token,   unique: true
    # add_index :users, :unlock_token,         unique: true
  end
end
$ rails db:migrate

● Changer de contrôleur

application_controller.rb


class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_action :configure_permitted_parameters, if: :devise_controller?
  
  protected

  #Méthode de remplacement.
  def configure_permitted_parameters
    sign_up_params = [:employee_number, :password, :password_confirmation]
    sign_in_params = [:employee_number, :password, :remember_me] 

      # account_update, sign_in, sign_up,Redéfinissez le domaine de
    devise_parameter_sanitizer.permit(:sign_up, keys: sign_up_params)
    devise_parameter_sanitizer.permit(:sign_in, keys: sign_in_params)
    devise_parameter_sanitizer.permit(:account_update, keys: account_update)
  end
 end

Ceci termine les réglages. Tout ce que vous avez à faire est de changer la vue et vous avez terminé.

référence

[* Rails *] Comment utiliser l'appareil (version rails5) Les débutants de Ruby on Rails ont essayé d'utiliser gem Devise.

Recommended Posts

[Débutant] Comment utiliser la conception Modifier les paramètres depuis l'introduction
Comment utiliser JUnit (débutant)
[Rails] Comment utiliser la "devise" des gemmes
[Rails] Comment utiliser l'appareil (Remarque)
[Introduction aux rails] Comment utiliser le rendu
Comment passer du HTML à Haml
[Flutter] Comment utiliser C / C ++ depuis Dart?
[Note] Comment utiliser Rails 6 Devise + cancancan
Comment utiliser Map
Comment utiliser rbenv
Comment utiliser with_option
Comment utiliser fields_for
Comment utiliser java.util.logging
Comment utiliser collection_select
Comment utiliser Twitter4J
Comment utiliser active_hash! !!
Comment utiliser MapStruct
Comment utiliser TreeSet
[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
De l'introduction de la conception à la création de la table des utilisateurs
[rails] Comment utiliser la méthode d'assistance de devise before_action: authenticate_user!
[Débutant] Découvrez le problème N + 1! Comment utiliser Bullet
Comment passer d'Oracle Java 8 à Adopt Open JDK 9
[Java] Comment utiliser Map
Comment utiliser Queue avec priorité
[Rails] Comment utiliser enum
Comment utiliser java Facultatif
Comment utiliser le retour Ruby
[Rails] Comment utiliser enum
Comment utiliser la classe Java
Comment utiliser Big Decimal
[Java] Comment utiliser removeAll ()
Comment utiliser String [] args
Comment utiliser la jonction de rails
Comment utiliser Java Map
Ruby: Comment utiliser les cookies
Comment utiliser Dependant :: Destroy
Comment utiliser Eclipse Debug_Shell
Comment utiliser Apache POI
[Rails] Comment utiliser la validation
Comment utiliser les variables Java
[Rails] Comment utiliser authenticate_user!
Comment utiliser GC Viewer