/ / Möglich, das Löschen eines Modells nicht zuzulassen, es jedoch als Abhängigkeit in Rails / ActiveRecord zu löschen? - Rubin-auf-Schienen, Rubin-auf-Schienen-3, Aktivaufzeichnung, Rubin-auf-Schienen-4, Schienen-Aktiv-Aufzeichnung

Möglicherweise das Löschen eines Modells nicht zulassen, aber als eine Abhängigkeit in Rails / ActiveRecord zerstört werden? - Rubin-auf-Schienen, Rubin-auf-Schienen-3, Aktivaufzeichnung, Rubin-auf-Schienen-4, Schienen-Aktiv-Aufzeichnung

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 № 1

Ich 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

Referenz: http://api.rubyonrails.org/classes/ActiveRecord/AutosaveAssociation.html#method-i-destroyed_by_association