A causa di problemi di dipendenza, non posso distruggere un particolare oggetto a
. Il modo per distruggerlo è distruggendo un oggetto diverso b
che ha dependent: :destroy
per il suo belongs_to
associazione a 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
C'è un modo per specificare che l'eliminazione a
non è permesso, ma permetti comunque di cancellarlo quando b
è cancellato?
Posso metterlo dentro A
:
before_destroy :prevent_destroy
private
def prevent_destroy
false
end
ma allora A
non sarà cancellato come dipendenza di B
.
risposte:
0 per risposta № 1Non sono sicuro di aver compreso correttamente la domanda. Poteva
class A < ActiveRecord::Base
#don"t ever delete this directly
has_one :b, dependent: :restrict
end
Lavoro per te?
0 per risposta № 2
Puoi controllare se destroyed_by_association
è impostato nel callback. Qualcosa di simile a:
before_destroy :prevent_destroy
private
def prevent_destroy
destroyed_by_association #nil is falsey
end
Riferimento: http://api.rubyonrails.org/classes/ActiveRecord/AutosaveAssociation.html#method-i-destroyed_by_association