我正在使用Rails 3.2.16。在我的應用程序中,有一個帳戶has_many用戶。一個帳戶必須始終有管理員用戶,所以你不能銷燬它們。這需要照顧:Rails ActiveRecord 3.2:如何在子模型中跳過before_delete回調?
class Account < ActiveRecord::Base
has_many :users, :dependent => :destroy
end
class User < ActiveRecord::Base
before_destroy :check_if_admin
def check_if_admin
false if self.is_admin
end
end
但是,當你銷燬整個帳戶時,管理員也應該銷燬。相反,當我從控制器呼叫@account.destroy
時,User#before_delete
回調可防止管理員用戶被破壞。
我知道我可以撥打@account.delete
跳過回調,但我的理解是:dependent => :destroy
本身就是一個回調,所以只會刪除帳戶,而不是用戶。
回調中有沒有方法可以知道我從哪裏來,例如
def check_if_admin
return if [I'm doing an Account dependent delete]
false if self.is_admin
end
還是我不得不手動delete
destroy
之前,荷蘭國際集團的用戶帳戶?