[RUBY] Implementieren Sie die Benutzerregistrierungsfunktion und die Unternehmensregistrierungsfunktion separat in Rails devise

Ich lerne seit anderthalb Monaten Programmieren.

Ich wollte eine BtoC-Matching-App durch persönliche Entwicklung erstellen und erkannte, dass ich B und C vorerst registrieren musste. Obwohl ich Anfänger war, habe ich sie mit viel Recherche implementiert und möchte einen Artikel als Ausgabe hinterlassen. ..

Hier generieren und implementieren Benutzer und Unternehmen separate Verwaltungstabellen.

1. Einführung des Geräts

Schreiben Sie zuerst devise in die Gemfile- und Bundle-Installation.

Installieren Sie dann das Gerät so wie es ist im Terminal.

% rails g devise:install

2. Ändern Sie /config/initializers/devise.rb

Es gibt verschiedene Codes, aber vielleicht ist Zeile 247? (Ich war Zeile 247) auskommentiert, Ändern Sie die Beschreibung mit der Aufschrift config.scoped_views = false. Das Auskommentieren wird ebenfalls wie folgt entfernt.

/config/initializers/devise.rb


  # ==> Scopes configuration
  # Turn scoped views on. Before rendering "sessions/new", it will first check for
  # "users/sessions/new". It's turned off by default because it's slower if you
  # are using only default views.
  config.scoped_views = true

3. Generieren Sie ein entwicklungsbezogenes Modell

Dieses Mal werden wir Modelle für Benutzer und Unternehmen generieren.

% rails g devise user
% rails g devise company

4. Generieren Sie einen Controller für jedes generierte Modell

% rails g devise:controllers users
% rails g devise:controllers companies

5. Generieren Sie eine verwandte Ansicht

% rails g devise:views users
% rails g devise:views companies

6. Routing-Einstellungen

Jetzt können Sie Benutzer und Unternehmen mit Geräten sicher verwalten. Wenn Sie jedoch das Routing überprüfen, enthält die Beschreibung von Controller # Action doppelte Teile. Ändern Sie sie daher ein wenig.

/config/routes.rb


  devise_for :companies, controllers: {
    sessions:      'companies/sessions',
    passwords:     'companies/passwords',
    registrations: 'companies/registrations'
  }
  devise_for :users, controllers: {
    sessions:      'users/sessions',
    passwords:     'users/passwords',
    registrations: 'users/registrations'
  }

Das ist in Ordnung.

7. Löschen Sie nicht verwendete Ansichten

Während des bisherigen Verfahrens wurde eine Ansichtsdatei generiert, die nicht mehr verwendet wird. Löschen Sie sie daher.

% rails d devise:views

Die Implementierung selbst ist oben abgeschlossen, aber ich war mir zum Zeitpunkt der Neuregistrierung nicht sicher, wie starke Parameter usw. beschrieben werden sollen. Daher werde ich dies anhand eines Beispiels erläutern, das ich auf meine eigene Weise untersucht und erfolgreich durchgeführt habe.

8. Stellen Sie starke Parameter ein

Wenn bisher ein Gerätemodell vorhanden war und eine Spalte hinzugefügt wurde, wurde es in application_controller.rb wie folgt festgelegt.

/controllers/application_controller.rb


class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

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

Da es diesmal jedoch zwei Modelle gibt, weiß ich nicht, wie ich es einstellen soll. Daher habe ich beschlossen, es mit jedem Controller festzulegen, der sich auf jedes von devise generierte Modell bezieht, anstatt mit application_controller.

Grundsätzlich sollten Sie den relevanten Teil nur auskommentieren und dem zulässigen Schlüsselarray eine beliebige Spalte hinzufügen.

/controllers/users/registrations_controller.rb


class Users::RegistrationsController < Devise::RegistrationsController
  before_action :configure_sign_up_params, only: [:create]

  def configure_sign_up_params
    devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :email, :password, :phone_number, :detail])
  end
end

/controllers/companies/registrations_controller.rb


class Companies::RegistrationsController < Devise::RegistrationsController
  before_action :configure_sign_up_params, only: [:create]

  def configure_sign_up_params
    devise_parameter_sanitizer.permit(:sign_up, keys: [:company_name, :email, :password, :phone_number, :office_url])
  end
end

das ist alles. Wenn Sie den Wert in jeder Ansichtsdatei registrieren, werden die Daten sicher gespeichert, und Sie können jetzt Funktionen wie An- und Abmelden implementieren.

Beachten Sie, dass Sie zwei Ansichten des Formulars haben müssen: Benutzer und Firma. Nun, das ist eine Teilvorlage und es spielt keine Rolle.

Schließlich

Danke fürs Lesen. Qiitas erster Beitrag und ich haben die Markdown-Notation noch nicht im Detail verstanden, daher war es möglicherweise etwas schwierig zu lesen.

Wenn Sie Kommentare haben, zögern Sie bitte nicht, uns zu kontaktieren. Wir werden es ab dem nächsten Mal zur Verbesserung nutzen.

Recommended Posts

Implementieren Sie die Benutzerregistrierungsfunktion und die Unternehmensregistrierungsfunktion separat in Rails devise
Implementieren Sie die Anwendungsfunktion in Rails
[Schienen] Implementieren Sie die Benutzersuchfunktion
[Rails] Implementieren Sie die Registrierungs- / Löschfunktion für Kreditkarten in PAY.JP
Führen Sie devise with Rails ein, um Benutzerverwaltungsfunktionen zu implementieren
Implementieren Sie die Anmeldefunktion in Rails einfach mit Name und Passwort (1)
Implementieren Sie die Anmeldefunktion in Rails einfach mit nur einem Namen und einem Passwort (2).
Implementieren Sie eine einfache Anmeldefunktion in Rails
Implementieren Sie die CSV-Download-Funktion in Rails
Implementieren Sie die Anmeldefunktion in Rails einfach mit Name und Passwort (3).
[Rails] Implementierung einer neuen Registrierungsfunktion im Assistentenformat mit devise
[Rails] Funktionseinschränkungen im Gerät (Login / Logout)
Benutzerregistrierung erstellen
Erstellen Sie die Authentifizierungsfunktion in der Rails-Anwendung mit devise
Verwenden Sie [Rails], um eine Gastbenutzerfunktion zu entwickeln (für das Portfolio).
Implementieren Sie die Sternebewertungsfunktion mit Raty in Rails 6
Markdown in Rails implementiert
Implementieren Sie die Nachsuchfunktion in der Rails-Anwendung (where-Methode).
[Rails6] entwickelt + Paranoia + sowohl das logische Löschen des Benutzers als auch eindeutige Einschränkungen, die in der MySQL8-Serie realisiert wurden
Rails Posts und User Linkage
Implementieren Sie die LTI-Authentifizierung in Rails
[Rails] Implementieren Sie die Image-Posting-Funktion
[Rails] Eine einfache Möglichkeit, eine Selbsteinführungsfunktion in Ihrem Profil zu implementieren
Ich habe versucht, die Ajax-Verarbeitung der ähnlichen Funktion in Rails zu implementieren
[Implementierungsverfahren] Erstellen Sie eine Benutzerauthentifizierungsfunktion mithilfe von Hexerei in Rails
[Rails] Fügen Sie einen Bestätigungsbildschirm und einen Abschlussbildschirm hinzu, um die Registrierung der Mitgliedschaft zu erstellen.
Rails 6 (standardmäßig mit Webpacker) implementiert die Sternebewertungsfunktion
[Rails] Einstellung des Sitzungszeitlimits im Gerät
Fügen Sie eine Suchfunktion in Rails hinzu.
Aktivieren Sie jQuery und Bootstrap in Rails 6 (Rails 6).
[Rails] Implementierung des Anmeldebildschirms in Devise
[Rails] Unerwarteter Validierungsfehler im Gerät
[Rails] Implementierung der Benutzerrückzugsfunktion
Implementieren Sie die PHP-Implodierungsfunktion in Java
[Rails] Kommentarfunktion (Registrierung / Anzeige / Löschung)
Implementieren Sie ein Kontaktformular in Rails
Entfernen Sie "Assets" und "Turbolinks" in "Rails6".
CRUD-Funktion und MVC in Rails
Implementieren Sie die Anmeldung, Benutzerregistrierung und Zwei-Faktor-Authentifizierung mit Docker x Laravel 8 Jetstream
So aktualisieren Sie Benutzeränderungen in Rails Devise, ohne ein Kennwort einzugeben
[Rails 6] Registrieren und Anmelden mit Devise + SNS-Authentifizierung (mehrere Links zulässig)
[Rails] So erhalten Sie die aktuell mit devise angemeldeten Benutzerinformationen
So implementieren Sie die E-Mail-Authentifizierungsfunktion zum Zeitpunkt der Benutzerregistrierung
So implementieren Sie Suchfunktionen in Rails
Schienen Hinzufügen einer einfachen Anmeldefunktion
Implementierung der Benutzerauthentifizierungsfunktion mit devise (1)
Authentifizierungsfunktion mit Play Framework [Registrierung und Authentifizierung]
Implementierung der Benutzerauthentifizierungsfunktion mit devise (3)
So implementieren Sie Ranking-Funktionen in Rails
Implementieren Sie Schaltflächenübergänge mit link_to in Rails
[Rails6] So verbinden Sie die von Scaffold generierte Buchungsfunktion mit der von devise generierten Benutzerfunktion