我想验证我的应用程序中至少有一个用户具有moderator
角色。
我有两个回调和一个方法:
before_save :ensure_one_moderator_always_present, if: :role_changed?
before_destroy :ensure_one_moderator_always_present
def ensure_one_moderator_always_present
if all_active_moderators.where.not(id: self.id).size =< 1
errors.add(:content, "There always needs to be at least one manager.")
end
end
我认为像上面的方法一样添加错误消息会像验证一样停止事务,但事实并非如此。
我做错了什么/我应该如何完成上述工作?
答案 0 :(得分:0)
在errors.add
其他为真后返回false
def ensure_one_moderator_always_present
if all_active_moderators.where.not(id: self.id).size =< 1
errors.add(:content, "There always needs to be at least one manager.")
false
end
true
end