【发布时间】:2011-07-28 01:54:00
【问题描述】:
我有三个班级:School、Account 和 Administratorship。
学校
has_many :administatorships
has_many :administrators, :through => :administratorships
帐户
has_many :administratorships
管理
belongs_to :account
belongs_to :school
before_destroy :confirm_presence_of_alternate_administratorship_in_school
protected
def confirm_presence_of_alternate_administratorship_in_school
unless school.administrators.count(["administratorships.account_id != #{id}"]) > 0
errors.add_to_base "The school must have at least one administrator"
end
end
现在,我希望在 Administratorship 的实例上调用 destroy 时,它会向模型添加错误并防止模型被破坏。我已经删除了unless 语句,看看这是否阻止了错误被添加,但事实并非如此。似乎模型上有错误并不能阻止破坏的发生。
所以我的问题是,有什么办法可以防止使用验证发生破坏?我意识到我可以定义一个仅在满足上述条件时才销毁的方法,但似乎验证方法是一种更优雅的解决方案。
【问题讨论】:
-
不应该是
> 1吗?这个查询不是在删除发生之前执行的吗? -
@panzi 它正在计算任何没有当前管理员帐户 ID 的管理员