如何在多个类之间传递模型错误?

时间:2016-12-08 17:28:42

标签: ruby-on-rails ruby activerecord activemodel

通过类链来处理模型错误的优雅方法是什么?

我们说我有一个复杂的表单,其中包含输入foobar,我希望在表单上显示验证错误。但是,foobar本身不是模型输入,它们只是传递给服务类的数据:

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并将其归于正确的输入?

0 个答案:

没有答案