Aufgrund von Abhängigkeitsproblemen kann ich ein bestimmtes Objekt nicht zerstören a
. Der Weg, es zu zerstören, besteht darin, ein anderes Objekt zu zerstören b
das hat dependent: :destroy
für seine belongs_to
Verbindung zu 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
Gibt es eine Möglichkeit, das Löschen anzugeben a
ist nicht erlaubt, kann aber trotzdem gelöscht werden, wenn b
ist gelöscht?
Ich kann das reinlegen A
:
before_destroy :prevent_destroy
private
def prevent_destroy
false
end
aber dann A
wird nicht als Abhängigkeit von gelöscht B
.
Antworten:
0 für die Antwort № 1Ich bin nicht sicher, ob ich die Frage richtig verstanden habe. Könnte
class A < ActiveRecord::Base
#don"t ever delete this directly
has_one :b, dependent: :restrict
end
Arbeite für dich?
0 für die Antwort № 2
Sie können überprüfen, ob destroyed_by_association
wird im Callback gesetzt. So etwas wie:
before_destroy :prevent_destroy
private
def prevent_destroy
destroyed_by_association #nil is falsey
end