2012-01-31 54 views
0

我有三種模式:用戶,訂閱和頻道。保護某些記錄不被修改或刪除的最佳方法是什麼?

用戶:

has_many :channels, :through => :subscriptions 

訂閱:

belongs_to :user 
belongs_to :channel 

頻道

belongs_to :user 
has_many :users, :through => :subscriptions 

我有一個after_create方法與某些自動添加一個信道的創建用戶的訂閱表其他必要的屬性設置。我應該如何以及在哪裏添加防止刪除或修改與頻道用戶相對應的訂閱記錄?

因爲我的模型可以從不同的控制器中的幾個不同的動作更新,我需要這個在模型層,但我不知道我應該使用哪個回調。我需要寫一個驗證,還是需要連接到before_destroyafter_destroy或什麼?

的Rails 3.1.3

回答

0

如果需要防止Subscription記錄的刪除或修改,除非某些條件得到滿足,我把在Subscription模型before_destroybefore_save掛鉤的保護。如果您的修改和刪除標準相同,它們都可以指向相同的方法;否則,您可以指定before_destroy :validate_destroy_privilegesbefore_save validate_save_privileges,或指定您正在檢查的語義。

+0

設置起來有點困難,因爲用戶通過用戶名在嵌套表單上添加。但是,強制使用管理員屬性設置爲true的渠道創建者訂閱的存在。這是我的模特。 https://gist.github.com/1745675 – Preacher 2012-02-05 13:52:24

相關問題