通过类链来处理模型错误的优雅方法是什么?
我们说我有一个复杂的表单,其中包含输入foo
和bar
,我希望在表单上显示验证错误。但是,foo
和bar
本身不是模型输入,它们只是传递给服务类的数据:
class ComplexForm
attr_accessor :foo, :bar
def save
foo_processor.process(foo)
bar_processor.process(bar)
end
end
然后,处理器验证输入,验证生成的模型,并保存或返回错误。处理器使用ActiveModel::Model
class FooProcessor
include ActiveModel::Model
validate :foo_is_valid
def process(foo)
model_instance = MyModel.new(parse(foo))
if valid? && model_instance.valid?
model_instance.save
else
???
end
end
end
如何将此潜在错误链传递至ComplexForm
并将其归于正确的输入?