ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina
Créé un contrôleur domestique et décrit ce qui suit.
config/routes.rb
root 'homes#top'
get 'mypage', to: 'homes#mypage'
app/controllers/homes_controller.rb
class HomesController < ApplicationController
def top
end
def mypage
end
end
Ajoutez ce qui suit à la fin du Gemfile.
Gemfile
gem 'devise'
Après l'enregistrement, accédez au terminal et exécutez ce qui suit.
Terminal
$ bundle install
Terminal
$ rails g devise:install
<détails> <résumé> Explication </ résumé> rails g devise: install effectue la configuration initiale du dispositif. </ détails>
C'est OK si l'affichage suivant est affiché.
Terminal
===============================================================================
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 *
===============================================================================
Contrairement à la description habituelle, Décrit comme "rails g nom de modèle de conception", qui est une règle unique de conception. Cette fois, pour créer un modèle utilisateur, exécutez ce qui suit sur le terminal.
Terminal
$ rails g devise User
Décrivez t.string: nom dans le dossier suivant.
db/migrate/xxxxxxxxxxxxx_devise_create_users.rb
...
t.string :name #← Ajouter ici
t.timestamps null: false
end
add_index :users, :email, 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
<détails> Supplément 1 </ summary>
En écrivant null: false, vous pouvez empêcher l'enregistrement dans un état vide.
À propos de null: false here </ details>
<détails> Supplément 2 </ summary>
Si vous souhaitez ajouter des informations d'enregistrement autres que votre nom,
Possible en écrivant de la même manière que t.string: name.
ex) t.string: numéro_téléphone etc. </ détails>
Accédez ensuite au terminal et procédez comme suit:
Terminal
$ rails db:migrate
C'est OK si l'affichage suivant est affiché.
Terminal
== 20200901103907 DeviseCreateUsers: migrating ================================
-- create_table(:users)
-> 0.0038s
-- add_index(:users, :email, {:unique=>true})
-> 0.0013s
-- add_index(:users, :reset_password_token, {:unique=>true})
-> 0.0013s
== 20200901103907 DeviseCreateUsers: migrated (0.0067s) =======================
Terminal
$ rails g devise:views users
<détails> <résumé> Explication </ résumé> rails g devise: affiche les utilisateurs Les vues de conception peuvent être stockées dans les applications / vues / utilisateurs Vous pouvez également modifier les vues. </ détails>
Décrivez ce qui suit dans <% = form_for%> sur la troisième ligne.
erb:app/views/devise/registrations/new.html.erb
...
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>
...
Remplacez les 3 e-mails suivants par name et email_field par text_field
erb:app/views/devise/sessions/new.html.erb
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
</div>
↓
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>
Décommentez la description suivante à la ligne 49 et remplacez [: email] par [: name]
config/initializers/devise.rb
config.authentication_keys = [:name]
erb:app/views/homes/top.html.erb
<%= link_to 's'inscrire', new_user_registration_path %><br>
<%= link_to 'S'identifier', new_user_session_path %>
erb:app/views/homes/mypage.html.erb
<%= current_user.name %><br>
<%= current_user.email %><br>
<%= link_to 'Se déconnecter', destroy_user_session_path, method: :delete %>
<détails> <résumé> Explication </ résumé> current_user est une méthode d'aide à la conception et peut obtenir des informations sur l'utilisateur lors de la connexion. Au moment de la déconnexion, bien qu'il n'y ait pas de couverture avec la méthode http, Il est sûr de spécifier method :: delete. </ détails>
Terminal
$ rails g devise:controllers users
Décommentez les lignes 4, 44-46, 54-56, Changé: attribut à la ligne 45 en: nom ,: email. Changez le chemin où vous voulez ignorer super (ressource) sur la 55e ligne.
app/controllers/users/registrations_controller.rb
# frozen_string_literal: true
class Users::RegistrationsController < Devise::RegistrationsController
before_action :configure_sign_up_params, only: [:create]
# before_action :configure_account_update_params, only: [:update]
...
# protected
# If you have extra params to permit, append them to the sanitizer.
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :email])
end
# If you have extra params to permit, append them to the sanitizer.
# def configure_account_update_params
# devise_parameter_sanitizer.permit(:account_update, keys: [:attribute])
# end
# The path used after sign up.
def after_sign_up_path_for(resource)
mypage_path
end
# The path used after sign up for inactive accounts.
# def after_inactive_sign_up_path_for(resource)
# super(resource)
# end
end
<détails> <résumé> Explication </ résumé> Spécifiez l'autorisation de sauvegarde de colonne lors de l'inscription en tant que nouveau membre aux lignes 44 à 46. Spécifiez la destination de transition après l'enregistrement d'un nouveau membre sur les 55e à 56e lignes. </ détails>
Ajouté sous la ligne 27.
app/controllers/users/sessions_controller.rb
...
def after_sign_in_path_for(resource)
mypage_path
end
def after_sign_out_path_for(resource)
root_path
end
end
<détails> <résumé> Explication </ résumé> Spécifiez la destination de la transition lors de la connexion et de la déconnexion. </ détails>
devise_for: utilisateurs Description supplémentaire ci-dessous.
config/routes.rb
Rails.application.routes.draw do
devise_for :users, controllers: {
sessions: 'users/sessions',
registrations: 'users/registrations',
}
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root 'homes#top'
get 'mypage', to: 'homes#mypage'
end