非常にシンプルなグループとロールモデルがあります
class Group < ActiveRecord::Base
has_many :roles, :dependent => :destroy
end
class Role < ActiveRecord::Base
belongs_to :group
after_destroy :ensure_last_role
private
def ensure_last_role
raise "Can't delete last role" if group.roles.count.zero?
end
end
after_destroyは完全に機能し、最後の役割が誤って破棄されることはありません。ただし、これにより、:dependent =>:destroyがすべての役割を破棄しようとしたときに、グループが破棄されるのを防ぐこともできます。グループが破壊されたときにensure_last_roleを呼び出さないことは可能ですか、それともこれにアプローチするためのより良い方法がありますか?