Предотвращение разрушения, если отношение HABTM не пусто

class Annex
 has_and_belongs_to_many: :documents
 end

 class Document
 has_and_belongs_to_many: :annexes
 end

Я хочу реализовать это поведение: если приложение связано хотя бы с одним документом, оно не должно быть уничтожено.

Есть ли простой способ рельсов сделать это, или мне нужно будет обойти это?

Должен ли я использовать метод before_destroy или что-то в этом роде?

1 ответ

Сделайте что-то вроде этого:

class Annex < ActiveRecord::Base
 has_and_belongs_to_many :documents
 before_destroy { raise "Can't destroy Annex, because it still associated to 1 or more documents" if documents.any? }
end

licensed under cc by-sa 3.0 with attribution.