En raison de problèmes de dépendance, je ne peux pas détruire un objet particulier a
. La façon de le détruire est de détruire un objet différent b
qui a dependent: :destroy
pour son belongs_to
association à a
:
class A < ActiveRecord::Base
#don"t ever delete this directly
has_one :b, dependent: :destroy
end
class B < ActiveRecord::Base
#delete this object instead and it will automatically delete A
belongs_to :a, dependent: :destroy
end
Existe-t-il un moyen de spécifier que la suppression a
n'est pas autorisé, mais permet toujours de le supprimer lorsque b
est supprimé?
Je peux mettre ça A
:
before_destroy :prevent_destroy
private
def prevent_destroy
false
end
mais alors A
ne sera pas supprimé en tant que dépendance de B
.
Réponses:
0 pour la réponse № 1Je ne sais pas si je comprends bien la question. Pourrait
class A < ActiveRecord::Base
#don"t ever delete this directly
has_one :b, dependent: :restrict
end
travailler pour vous?
0 pour la réponse № 2
Vous pouvez vérifier si destroyed_by_association
est défini dans le rappel. Quelque chose comme:
before_destroy :prevent_destroy
private
def prevent_destroy
destroyed_by_association #nil is falsey
end