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.
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.
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
・ Https://dorarep.page/articles/rails-dependent#dependent_restrict_with_exception_restrict_with_error
Recommended Posts