Я пытаюсь предотвратить уничтожение записи, если есть дети.
class Submission < ActiveRecord::Base
has_many :quotations, :dependent => :destroy
before_destroy :check_for_payments
def quoted?
quotations.any?
end
def has_payments?
true if quotations.detect {|q| q.payment}
end
private
def check_for_payments
if quoted? && has_payments?
errors[:base] << "cannot delete submission that has already been paid"
false
end
end
end
class Quotation < ActiveRecord::Base
#associations
belongs_to :submission
has_one :payment_notification
has_one :payment
before_destroy :check_for_payments
private
def check_for_payments
if payment_notification || payment
errors[:base] << "cannot delete quotation while payment exist"
return false
end
end
end
Когда я проверяю этот код, before_destroy: check_for_payments не позволяет удалить запись Quotation.
Однако: check_for_payments в обратном вызове Submission before_destroy не прекращает удаление Представление.
Как я могу приостановить подачу с момента уничтожения платежей?