В обратных вызовах уничтожения мы проверяем использование этой конкретной записи и ограничиваем удаление записи при ее использовании.
Модель
before_destroy :check_usages
def check_usages
# Usage checking logics
throw :abort if usage
end
В контроллере
def destroy
if record.destroy
# Success response
else
# error response
end
end
В одном из моих случаев мне нужно удалить несколько записей.
Если я использую,
records.destroy_all
Эта используемая запись не удаляется. Это нормально
def destroy
ActiveRecord::Base.transaction do
records.destroy_all
error_messages = []
records.each do |record|
error_messages << record.errors.full_messsages if record.errors.present?
raise ActiveRecord::Rollback if error_messages.present?
end
end
end
Это то, что я пытаюсь сделать, и я хочу знать, есть ли какой-либо другой лучший способ получить и вернуть ошибки и предотвратить их удаление после возникновения ошибки.