假设一个模型捕获了一个验证错误,通常这是由控制器处理的,但是模型可以自动处理它吗?
实际上,我想uid
为每个生成一个唯一的 id Note
,模型如下所示:
class Note < ActiveRecord::Base
validates_uniqueness_of :uid
# ... some code to generate uid on after_initialize
end
我得到的最接近的是:
class Note < ActiveRecord::Base
validates_uniqueness_of :uid
# ... some code to generate uid on after_initialize
after_rollback :repair
protected
def repair
if self.errors[:uid].size > 0
self.uid = generate_uid
end
self.save # Try again
end
end
我的解决方案的一些直接问题:(1)模型实例仍然有控制器可以看到的错误,我不确定如何清除错误。(2)修复方法是递归的。