Wenn Sie eine Benutzerauthentifizierung mit devise erstellen, haben Sie von Anfang an eine E-Mail-Adresse und ein Kennwort, benötigen jedoch einen Namen, um sich als Benutzer zu registrieren. Ich denke immer, also mach dir eine Notiz.
Wenn Sie einer Datenbank eine Spalte hinzufügen, schreiben Sie diese normalerweise wie folgt. Geben Sie der Migrationsdatei zunächst einen Namen, der angibt, was die Migrationsdatei tut.
Wenn Sie beim Benennen "AddColumnToUsers" schreiben und dies so etwas wie "Hinzufügen einer Spalte zur Benutzertabelle" bedeutet, seien Sie vorsichtig, da der Name beim Hinzufügen der nächsten Spalte ein Problem darstellt. Erstens denke ich, dass es notwendig ist, Spalten = DB-Design hinzuzufügen, aber ich bin in diesem Bereich noch unerfahren. Sagen Sie mir bitte, wer stark ist.
$Schienen generieren Migration Spaltenname zum Tabellennamen hinzufügen Spalte, die hinzugefügt werden soll:Datentyp
$ 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 %>
#Von hier aus hinzufügen
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true %>
</div>
#Bisher
<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" %>
Ich möchte in der Lage sein, die Informationen des Namens zu erhalten, der von View geflogen ist, also Fügen Sie application_controller.rb
Folgendes hinzu.
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
Schreiben Sie den folgenden Code in application.html.erb
.
current_user
ist eine der von devise bereitgestellten Methoden, und Sie können die Informationen des angemeldeten Benutzers abrufen.
erb:application.html.erb
<% if current_user.present? %>
<p>Hallo,<%= current_user.name %>San!</p>
<% else %>
<p>Hallo Gast!</p>
<% end %>
Wenn es gut angezeigt wird, ist es OK!
Recommended Posts