0
最後的作用,我們有一個非常簡單的組和角色模型如何摧毀模型,但也不允許被刪除
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?
其實,我想,這是可能的,這是行不通的,由於'after_destroy'回調被稱爲在最後'Role'的'Group'是不斷破壞之前;如果沒有,我會添加一個替代答案! – 2012-08-12 03:45:21
,不幸的是沒有工作。任何其他想法? – sthapit 2012-08-12 23:18:32
經過一番搗鼓之後,我想我有一個體面的解決方案;我已經更新了答案。 – 2012-08-12 23:53:01