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.
Ruby 2.5.3 Ruby on Rails 5.2.4 Devise 4.7.1
 
 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
config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
Réglage de l'itinéraire Il est configuré pour accéder à l'itinéraire après l'enregistrement en tant que membre.
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>
$ 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é.
[* Rails *] Comment utiliser l'appareil (version rails5) Les débutants de Ruby on Rails ont essayé d'utiliser gem Devise.
Recommended Posts