Lorsque vous créez une authentification utilisateur avec appareil, vous aurez un email et un mot de passe depuis le début, mais vous aurez besoin d'un nom pour vous enregistrer en tant qu'utilisateur. Je pense toujours que oui, alors prenez note.
--Déjà ajouté la gemme de devise
--Il doit s'agir de rails g concevoir User
Lors de l'ajout d'une colonne à un DB, il est courant de l'écrire comme suit. Pour l'instant, attribuez au fichier de migration un nom qui vous indique ce que fait le fichier de migration.
Lorsque vous le nommez, si vous écrivez ʻAddColumnToUsers` et que cela signifie quelque chose comme "ajouter une colonne à la table utilisateur", soyez prudent lors de l'ajout de la colonne suivante. En premier lieu, je pense qu'il est nécessaire d'ajouter des colonnes = DB design, mais je suis encore inexpérimenté dans ce domaine, alors dites-moi qui est fort.
$les rails génèrent la migration Ajouter le nom de la colonne Au nom de la table Colonne à ajouter:Type de données
$ rails generate migration AddNameToUsers name:string
XXXXXXXXXXX_add_name_to_users.rb
class AddNameToUsers < ActiveRecord::Migration[5.2]
def change
add_column :users, :name, :string
end
end
$ rails db:migrate
erb:registrations/new.html.erb
<h2>Sign up</h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= render "devise/shared/error_messages", resource: resource %>
#Ajouter à partir d'ici
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true %>
</div>
#Jusque là
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "new-password" %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>
<%= render "devise/shared/links" %>
Je veux pouvoir recevoir les informations du nom qui a volé de View, donc Ajoutez ce qui suit à application_controller.rb
.
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: [:name])
end
end
Écrivez le code suivant dans ʻapplication.html.erb.
current_user` est l'une des méthodes fournies par devise, et vous pouvez obtenir les informations de l'utilisateur connecté.
erb:application.html.erb
<% if current_user.present? %>
<p>Bonjour,<%= current_user.name %>San!</p>
<% else %>
<p>Bonjour, Visiteur!</p>
<% end %>
S'il est bien affiché, c'est OK!
Recommended Posts