Je souhaite déclencher une exception ou une erreur lorsque l'enregistrement associé existe lors de la suppression d'un enregistrement. C'est une situation où l'élément parent ne doit pas être effacé s'il est utilisé dans la clé externe.
Lorsque j'essaye de le supprimer, un écran d'erreur Ruby apparaît.
C'était parce qu'il n'y avait pas de définition du comportement pour le modèle associé à «Model». Le fichier de migration «clé étrangère: True» n'était pas suffisant.
Il a été résolu en écrivant l'option "dépendante" dans le "Modèle". Écrivez ce qui suit pour le modèle pertinent.
#Modèle appelé contrat
class Contract < ApplicationRecord
has_many :...., dependent: :restrict_with_error
end
En écrivant dependante :: restrict_with_error
après la description de l'association, il était possible d'afficher l'erreur lorsque destory
ne peut pas être effectué.
Les conditions suivantes ont été remplies et résolues! ..
#Contrôleur de modèle appelé contrat
def destroy
contract = Contract.find(params[:id])
if contract.destroy
redirect_to contract_path, notice: "Supprimé le contrat sélectionné"
else
redirect_to contract_path, alert: "Ne peut pas être supprimé car il est en cours d'utilisation"
end
end
・ Https://dorarep.page/articles/rails-dependent#dependent_restrict_with_exception_restrict_with_error
Recommended Posts