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.
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
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
Dieses Mal werden wir Modelle für Benutzer und Unternehmen generieren.
% rails g devise user
% rails g devise company
% rails g devise:controllers users
% rails g devise:controllers companies
% rails g devise:views users
% rails g devise:views companies
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.
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.
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.
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