保护某些记录不被修改或删除的最佳方法是什么?

时间:2012-01-31 18:43:16

标签: ruby-on-rails

我有三种模式:用户,订阅和频道。

用户:

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

1 个答案:

答案 0 :(得分:0)

如果您需要阻止删除或修改Subscription记录,除非符合某些条件,我会将这些保护措施放入Subscription模型的before_destroy和{{1} }钩子。如果您的修改和删除标准相同,则它们都可以指向相同的方法;否则你可以指定before_savebefore_destroy :validate_destroy_privileges,或任何对你正在检查的内容有意义的内容。