[RUBY] Ajouter un élément lors de la connexion avec un appareil

【Environnement de développement】 macOS Catalina Version 10.15.3 ruby 2.5.1 Rails 5.2.4.2 visual studio code

Ajouter un élément lors de la connexion avec un appareil

Si vous créez une fonction de connexion avec devise, il s'agit à l'origine uniquement d'une adresse e-mail et d'un mot de passe, mais c'est une méthode pour ajouter des colonnes pour d'autres éléments.

Ajoutez la colonne que vous souhaitez créer

Cette fois, ajoutez une colonne appelée société à titre d'exemple.

$ rails g migration AddColumnToUsers company

Jetons un coup d'œil au fichier de migration créé. Si vous ne définissez pas la valeur par défaut, une erreur se produira, je vais donc la décrire.

Date et heure de création_add_company_to_users.rb


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

Lorsque la description est terminée, reflétez-la dans le DB.

$ rails db:migrate

Ajouter un formulaire à afficher

Ajoutez un formulaire afin de pouvoir saisir des valeurs dans les colonnes que vous avez créées. Si vous n'avez pas créé de vue de devise, créez-en une.

$ rails g devise:views

registrations/new.html.erb



Ajouter ici---------------------------------
  <div class="field">
    <%= f.label :Veuillez saisir le nom de l'hôpital et le nom de l'entreprise%><br />
    <%= f.text_field :company, autofocus: true, class: "new_inform"%>
  </div>
---------------------------------
  <div class="field">
    <%= f.label :Veuillez saisir votre adresse e-mail%><br />
    <%= f.email_field :email, autofocus: true, autocomplete: "email", class: "new_inform" %>
  </div>

  <div class="field">
    <%= f.label :s'il vous plait entrez votre mot de passe%>
    <% if @minimum_password_length %>
    <em>(<%= @minimum_password_length %>lettre)</em>
    <% end %><br />
    <%= f.password_field :password, autocomplete: "new-password", class: "new_inform" %>
  </div>

  <div class="field">
    <%= f.label :Veuillez resaisir votre mot de passe%><br />
    <%= f.password_field :password_confirmation, autocomplete: "new-password", class: "new_inform" %>
  </div>

  <div class="actions">
    <%= f.submit "s'inscrire", class: "new_submit" %>
  </div>
<% end %>

Refléter la colonne ajoutée dans la base de données

Utilisez la méthode configure_permitted_parameters pour définir des paramètres forts.

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

Maintenant, il peut être reflété dans la base de données.

Je vous serais reconnaissant si vous pouviez signaler des erreurs. Merci d'avoir regardé jusqu'à la fin.

Recommended Posts

Ajouter un élément lors de la connexion avec un appareil
Passer à la page de confirmation lors de la déconnexion avec l'appareil
N'ajoutez pas inutilement @GeneratedValue lors de la création d'une entité avec JPA
Ajout d'une déclaration XML lors du retour de xml avec spring-boot
Ajouter .gitignore lors de la création d'un projet dans Xcode
Ajouter un projet dans n'importe quel dossier avec Gradle
MultipleBagFetchException lors de la récupération de jointure avec plusieurs OneToMany dans JPA
Ajoutez un fichier jar externe dans un projet IntelliJ.
Implémentez rapidement singleton avec enum en Java
Quand je bcrypt avec node + docker, j'ai une erreur