[RUBY] Ich möchte devise_parameter_sanitizer einzeln festlegen, wenn ich zwei Geräte erstelle

Erstellen Sie zwei Geräte und schreiben Sie die Prozedur, wenn Sie einen einzelnen devise_parameter_sanitizer festlegen möchten.

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.

So legen Sie devise_parameter_sanitizer für verschiedene Modelle fest, wenn zwei Geräte erstellt werden.

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

Ich möchte devise_parameter_sanitizer einzeln festlegen, wenn ich zwei Geräte erstelle
Ich möchte eine generische Anmerkung für einen Typ erstellen
Ich möchte beim Schreiben von Testcode zufällig Informationen generieren
Ich möchte Zeichen konvertieren ...
Ich möchte ein Formular erstellen, um die Kategorie [Schienen] auszuwählen
Ich möchte eine Parkettdatei auch in Ruby erstellen
Eine Sammlung von Links, denen Sie helfen möchten, wenn JSF überhaupt nicht funktioniert
Ich möchte OutOfMemory bei der Ausgabe großer Dateien mit POI vermeiden
[Rails] Ich möchte beim Übergang mit link_to Daten zu Params hinzufügen
Ich möchte die JSP des offenen Portlets bei der Entwicklung von Liferay kennen
[Active Admin] Ich möchte die Standardverarbeitung zum Erstellen und Aktualisieren anpassen
Ich möchte mit Jakarta EE 8 mit Java 11 ein dunkles Web-SNS erstellen
Ich möchte die IP-Adresse erhalten, wenn ich mit Java eine Verbindung zu Wi-Fi herstelle
Ich möchte bei der Registrierung in der Datenbank eine Fehlermeldung anzeigen
Ich möchte eine Webanwendung entwickeln!
Ich möchte ein schönes build.gradle schreiben
Ich möchte doppelte Fehlermeldungen beseitigen
Ich möchte eine ios.android App machen
Ich möchte DBViewer mit Eclipse 2018-12 verwenden! !!
Ich möchte einen Unit Test schreiben!
Ich möchte PHP 7.2 unter Ubuntu 20.04 installieren.
Ich möchte Java-Updates insgesamt stoppen
Ich möchte @Autowired in Servlet verwenden
Ich möchte statische Felder auf @Autowired ausrichten
Ich möchte die Teamentwicklung aus der Ferne durchführen
[Android] Ich möchte einen ViewPager erstellen, der für Tutorials verwendet werden kann
Ich möchte die stärkste lokale Entwicklungsumgebung mit VSCode Remote Containers erstellen