我有一个标准模型和自定义验证
自定义验证可以正常工作,但是......
当我在事务中保存并触发我的自定义验证时,保存失败但事务未回滚。
当我在事务中保存并触发系统验证时,保存失败并且事务被回滚。
我已阅读我可以检查使用save bang然后触发异常来回滚事务但是我更喜欢我的自定义验证功能与系统验证相同而不需要异常处理程序。
我的自定义验证码很简单:
class Family < ActiveRecord::Base
validates_presence_of :name
validate :ensure_no_twins
Private
def ensure_no_twins
errors.add(:name, "A sibling by this name already exists") if self.siblings.exists?(name: name) rescue true
end
end
答案 0 :(得分:2)
你是否在没有rescue
条款的情况下尝试过它?可能会发现它不应该被捕获的例外情况吗?
errors.add(:name, "A sibling by this name already exists") if self.siblings.exists?(name: name)