[RUBY] Fügen Sie ein Element hinzu, wenn Sie sich mit devise anmelden

【Entwicklungsumgebung】 macOS Catalina Version 10.15.3 ruby 2.5.1 Rails 5.2.4.2 visual studio code

Fügen Sie ein Element hinzu, wenn Sie sich mit devise anmelden

Wenn Sie eine Anmeldefunktion mit devise erstellen, handelt es sich ursprünglich nur um eine E-Mail-Adresse und ein Kennwort. Es handelt sich jedoch um eine Methode zum Hinzufügen von Spalten für andere Elemente.

Fügen Sie die Spalte hinzu, die Sie erstellen möchten

Fügen Sie dieses Mal eine Spalte mit dem Namen company als Beispiel hinzu.

$ rails g migration AddColumnToUsers company

Werfen wir einen Blick auf die erstellte Migrationsdatei. Wenn Sie den Standardwert nicht festlegen, tritt ein Fehler auf, daher werde ich ihn beschreiben.

Erstellungsdatum und -zeit_add_company_to_users.rb


class AddCompanyToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :company, :string, null: false, default: ''
  end
end

Wenn die Beschreibung fertig ist, spiegeln Sie sie in der Datenbank wider.

$ rails db:migrate

Formular zur Ansicht hinzufügen

Fügen Sie ein Formular hinzu, damit Sie Werte in die von Ihnen erstellten Spalten eingeben können. Wenn Sie keine Entwurfsansicht erstellt haben, erstellen Sie eine.

$ rails g devise:views

registrations/new.html.erb



Hier hinzufügen---------------------------------
  <div class="field">
    <%= f.label :Bitte geben Sie den Krankenhausnamen und den Firmennamen ein%><br />
    <%= f.text_field :company, autofocus: true, class: "new_inform"%>
  </div>
---------------------------------
  <div class="field">
    <%= f.label :Geben Sie bitte Ihre Email-Adresse ein%><br />
    <%= f.email_field :email, autofocus: true, autocomplete: "email", class: "new_inform" %>
  </div>

  <div class="field">
    <%= f.label :Bitte geben Sie Ihr Passwort ein%>
    <% if @minimum_password_length %>
    <em>(<%= @minimum_password_length %>Brief)</em>
    <% end %><br />
    <%= f.password_field :password, autocomplete: "new-password", class: "new_inform" %>
  </div>

  <div class="field">
    <%= f.label :Bitte geben Sie Ihr Passwort erneut ein%><br />
    <%= f.password_field :password_confirmation, autocomplete: "new-password", class: "new_inform" %>
  </div>

  <div class="actions">
    <%= f.submit "zu registrieren", class: "new_submit" %>
  </div>
<% end %>

Reflektieren Sie die hinzugefügte Spalte in der Datenbank

Verwenden Sie die Methode configure_permitted_parameters, um starke Parameter festzulegen.

devise\app\controllers\application_controller.rb


  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

    def configure_permitted_parameters
      devise_parameter_sanitizer.permit(:sign_up, keys: [:company])
    end

Jetzt kann es in der DB widergespiegelt werden.

Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten. Danke, dass du bis zum Ende zugesehen hast.

Recommended Posts

Fügen Sie ein Element hinzu, wenn Sie sich mit devise anmelden
Beim Abmelden mit devise zur Bestätigungsseite wechseln
Fügen Sie @GeneratedValue nicht unnötig hinzu, wenn Sie eine Entität mit JPA erstellen
XML-Deklaration hinzugefügt, wenn XML mit Spring-Boot zurückgegeben wird
Fügen Sie .gitignore hinzu, wenn Sie ein Projekt in Xcode erstellen
Fügen Sie mit Gradle ein Projekt in einen beliebigen Ordner ein
MultipleBagFetchException beim Join-Abruf mit mehreren OneToMany in JPA
Fügen Sie eine externe JAR-Datei in ein IntelliJ-Projekt ein.
Implementieren Sie Singleton mit Enum schnell in Java
Beim Verschlüsseln mit Node + Docker wurde eine Fehlermeldung angezeigt