[RUBY] [Rails] Was tun, wenn Sie einen Fehler generieren möchten, der nicht behoben werden kann, wenn externe Schlüsselbeschränkungen angewendet werden?

Einführung

Ich möchte eine Ausnahme oder einen Fehler auslösen, wenn der zugehörige Datensatz beim Löschen eines Datensatzes vorhanden ist. Es ist eine Situation, dass das übergeordnete Element nicht gelöscht werden sollte, wenn es im externen Schlüssel verwendet wird.

Wenn ich versuche, es zu löschen, wird ein Ruby-Fehlerbildschirm angezeigt.

Ursache

Dies lag daran, dass es keine Definition des Verhaltens für das mit "Modell" verknüpfte Modell gab. Die Migrationsdatei "Fremdschlüssel: Wahr" reichte nicht aus.

Gegenmaßnahmen

Es wurde gelöst, indem die "abhängige Option" in das "Modell" geschrieben wurde. Schreiben Sie Folgendes für das entsprechende Modell.

#Modell namens Vertrag
class Contract < ApplicationRecord
  has_many :...., dependent: :restrict_with_error

end

Durch Schreiben von "abhängige :: einschränken_mit_Fehler" nach der Zuordnungsbeschreibung konnte der Fehler angezeigt werden, wenn "Schicksal" nicht ausgeführt werden kann. Die folgenden Bedingungen wurden erfüllt und gelöst! ..


#Controller des Modells namens Vertrag
def destroy
    contract = Contract.find(params[:id])
    if contract.destroy
      redirect_to contract_path, notice: "Den ausgewählten Vertrag gelöscht"
    else
      redirect_to contract_path, alert: "Kann nicht gelöscht werden, da es verwendet wird"
    end
end

Referenz

・ Https://dorarep.page/articles/rails-dependent#dependent_restrict_with_exception_restrict_with_error

Recommended Posts

[Rails] Was tun, wenn Sie einen Fehler generieren möchten, der nicht behoben werden kann, wenn externe Schlüsselbeschränkungen angewendet werden?
[Rails] Was ist zu tun, wenn Rails db: migrate nicht ausgeführt werden kann, da keine Tabelle vorhanden ist, auf die der externe Schlüssel verweist?
<Punktinstallation> Was tun, wenn Sie aufgrund eines Fehlers beim Erstellen einer Entwicklungsumgebung für das Rails-Lernen nicht fortfahren können?
[Ubuntu] Was tun, wenn MongoDB aufgrund eines SocketException-Fehlers nicht gestartet werden kann?
Was tun, wenn die Meldung "Ein Server läuft bereits" angezeigt wird. Fehler beim Versuch, den Rails-Server zu starten
Was ist nach der Installation von 'devise' 'bootstrap' von gemfile with Rails zu tun, wenn url ein Fehler ist?
Was tun, wenn beim Abrufen von Rails datetime_field die Fehlermeldung "Bitte geben Sie einen gültigen Wert ein" angezeigt wird?
Was tun, wenn die Fehlermeldung "JavaScript-Laufzeit konnte nicht gefunden werden" angezeigt wird? Beim Starten des Rails-Servers
[Schienen] Was tun, wenn mit der Fehlermethode keine Fehlermeldung angezeigt wird?
Was tun, wenn während des Rails-Testcodes ein Fehler bei der Standardauthentifizierung auftritt?
Was tun, wenn CentOS nicht mit VirtualBox unter Catalina gestartet werden kann?
Was tun, wenn ein Fehler auftritt, wenn nokogiri bei der Bundle-Installation eingeht?
[Rails] Was tun, wenn die Fehlermeldung "JavaScript-Laufzeit konnte nicht gefunden werden?" Angezeigt wird, wenn der Befehl "Rails" in Catalina ausgeführt wird
Wenn Sie irgendwo einen Fehler melden möchten, wenn Sie graphql-spring-boot mit Spring Boot verwenden
Was tun, wenn die ffi-Installation beim Starten einer Anwendung in Rails fehlschlägt?
[Rails / Vielleicht kann es auf andere Dinge angewendet werden? ] Was tun, wenn Fehler / Fehler __send__ (Methodendatei) rspec nicht ausgeführt werden kann? Eine solche Datei wird beim Ausführen von RSpec angezeigt
Was verwenden Sie beim Konvertieren in String?
[React.useRef] Was tun, wenn im Ereignis-Listener nicht auf den neuesten Status verwiesen werden kann?
Was tun, wenn Sie Ihren API-Schlüssel nach der Bereitstellung auf Rails heroku nicht finden können?
Ich kann nicht bereitstellen! Beheben Sie einen Fehler, der nicht auf Heroku übertragen werden kann (Rails Tutorial Kapitel 1).
Was tun, wenn ein Fehler in Rails auftritt? DB: migrate ((StandardError: Ein Fehler ist aufgetreten, diese und alle späteren Migrationen wurden abgebrochen :))
Was tun, wenn ein Fehler auftritt (StandardError: Ein Fehler ist aufgetreten, diese und alle späteren Migrationen wurden abgebrochen :) in Rails db: migrate
Was tun, wenn der Rails-Server nicht gestoppt werden kann?
Was tun, wenn ein ActionController :: UnknownFormat-Fehler auftritt?
Ein Einführungsbuch zum Starten von Rails
Fehler ExecJS :: RuntimeUnavailable: Was tun, wenn es auftritt?
Was tun, wenn das Git-Repository nicht im Azure Team Explorer für Eclipse angezeigt werden kann?
[Rails Tutorial Kapitel 2] Was tun, wenn Sie einen Fehlern im Spaltennamen machen?
Was tun, wenn im Testcode der Steuereinheit in Rails der Fehler "302" angezeigt wird?
[Rails 6] Was tun, wenn nach der Einführung von haml ein fehlender Vorlagenfehler auftritt? [Super easy]
Was tun, wenn die Fehlermeldung angezeigt wird, dass keine gültige Basis für Repo gefunden werden kann, wenn Sie im udemy-Kurs mit CentOS7 das Docker yum -y install verwenden?
Was ist zu tun, wenn Ausdrucksoperatoren nicht auf die Methodenbindung angewendet werden können?
Was tun, wenn der Befehl adb nicht ausgeführt werden kann?
Was tun, wenn der Befehl Rails unbrauchbar wird?
[Rails] Was tun, wenn der Fehler Keine Datenbank ausgewählt und Unbekannte Datenbank in db: migrate angezeigt wird?
Was tun, wenn Sie aufgrund eines SSL-Zertifikatfehlers offline gehen, wenn Sie Jenkins auf Ihrem Mac ausführen?
Vermeiden Sie das Problem, dass beim Upgrade von Rails 4.2.x auf 5.0.x keine Sitzung abgerufen werden kann, wenn Canary freigegeben wird.
Was tun, wenn Sie die Quellposition wissen möchten, an der die Methode in bind.pry definiert ist?
Was tun, wenn während der automatischen Bereitstellung auf EC2 mit Capistrano ein SSH-Schlüsselauthentifizierungsfehler auftritt?
Was tun, wenn beim Versuch, mit Eclipse zu erstellen, ein Fehler in der gemeinsam genutzten JNI-Bibliothek auftritt?
Was tun, wenn Sie eine [HTTP-Anforderung hat zu lange gedauert] Fehler in Docker.
Was ist mit dem Fehler "Kann nicht gelesen werden oder ist keine gültige ZIP-Datei?" Zu tun
Was tun, wenn beim Installieren von Axios in einem React + Typescript-Projekt ein Fehler auftritt?