您好我的模型上有状态机,我需要在观察者上添加验证。我试过的时候
def before_transition(record, transition)
to = transition.to.to_s
record.errors.add(:state, "Can't cancel") if to == 'cancel'
return false
end
当我用better_errors和binding_of调用者gem调试它时,我可以看到错误添加到记录中。
>> record.errors.any?
=> true
但它正在保存记录。
如果我将before_update方法添加到观察者。在before_transition方法之后运行
def before_update(record)
>> record.errors.any?
=> false
end
错误消失。
如何取消观察员中某些条件的更新过程。
PS:我无法在模型中使用验证方法,因为我无法在自定义验证器方法中进行转换。
答案 0 :(得分:0)
我不知道这是否正确,但我用
解决了raise ActiveRecord::Rollback, "There is an error"
我用作
def before_transition(record, transition)
to = transition.to.to_s
record.errors.add(:state, "Can't cancel") if to == 'cancel'
if record.errors.any?
raise ActiveRecord::Rollback, "There is an error"
end
end