Erstellen einer Originalanwendung.
ruby '2.6.5' rails '6.0.0'
Beginnen Sie zunächst als Voraussetzung mit den Routing-, Modell-, Controller- und Ansichtseinstellungen der einzelnen Geräte. Die obige Erstellungsmethode finden Sie unter hier.
Wenn es jetzt ein Gerät für eine Anwendung gibt, verwenden Sie normalerweise before_action in der Datei application_controller.rb, um devise_parameter_sanitizer zu verarbeiten.
app/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: [:nickname])
end
end
Auf diese Weise können Sie bei der Registrierung als Benutzer eine bestimmte Spalte zulassen.
Diesmal habe ich zwei Geräte gemacht, Benutzer und Arzt.
Zuallererst ist es in der README-Datei des Repositorys, also habe ich es versucht, aber es kommt nicht sehr gut heraus. Ich wusste nicht, ob ich eine Datei zum Erben erstellen oder eine vorhandene Datei verwenden sollte.
Infolgedessen gibt es eine einzelne Datei app / controller / users / registrations_controller.rb. Verwenden Sie diese.
Für Benutzer
app/controllers/users/registrations_controller.rb
Für Doktor
app/controllers/doctors/registrations_controller.rb
Die folgende Beschreibung finden Sie in der großen Anzahl von Kommentaren in der Benutzerdatei.
app/controllers/users/registrations_controller.rb
# before_action :configure_sign_up_params, only: [:create]
Kommentare aktivieren für. . ↓
app/controllers/users/registrations_controller.rb
before_action :configure_sign_up_params, only: [:create]
Wenn Sie nun einen Benutzer erstellen, Nun wird configure_sign_up_params aufgerufen In derselben Datei def configure_sign_up_params Auskommentieren und aktivieren.
app/controllers/users/registrations_controller.rb
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
end
Schreiben Sie dann das Karamu, das Sie diesem Teil hinzufügen möchten (: sign_up, keys: [: nickname]).
app/controllers/users/registrations_controller.rb
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :password])
end
Der Arzt wird die gleiche Arbeit machen. Die Datei lautet app / controller / doctor / registrations_controller.rb.
Wie einige von Ihnen vielleicht bemerkt haben, wird devise_parameter_sanitize nicht in app / controller / application_controller.rb geschrieben, da es nicht im Anwendungscontroller definiert ist und von before_action in einer einzelnen Datei aufgerufen wird.
Wenn Sie das oben genannte tun
TypeError
superclass mismatch for class DoctorController
class DoctorController < ApplicationController
Ich habe einen Fehler bekommen. Wenn man genau hinschaut, Klasse DoctorController <ApplicationController ist Doctor.
class DoctorController < ApplicationController
class DoctorsController < ApplicationController
Da es von app / controller / doctor / registrations_controller.rb erbt, gibt es keine "" s "". Beschreiben Sie es daher.
Bitte beachten Sie, dass Schienen strenge Namensregeln haben! !!
Recommended Posts