ActiveModel :: Serializer:如何从分层Rails模型中收集验证错误?

时间:2013-01-28 23:28:48

标签: ruby-on-rails active-model-serializers

我有一个分层的Rails模型。验证时,模型的每个实例都有一个errors属性,该属性是验证中的错误数组。这些错误需要序列化为一个JSON对象,该对象与生成错误的主模型的层次结构相匹配。有没有办法利用ActiveModel::Serializer代码,以便我可以使用已在ActiveModel::Serializer子类中配置的关联,以便我可以遍历分层模型并将错误提取到对象中以作为JSON发送到客户?

这是我的分层模型:

class Submission < ActiveRecord::Base
  has_one :precipitation 
end

class Precipitation < ActiveRecord::Base
  has_one :precipitation_solid 
  belongs_to :submission
end

class PrecipitationSolid < ActiveRecord::Base
  has_many :precipitation_solid_samples
  belongs_to :precipitation
end

class PrecipitationSolidSample < ActiveRecord::Base
  belongs_to :precipitation_solid
end

我希望在样本值超出范围时生成以下JSON

{"submission": {
  "precipitation": {
    "precipitation_solid": {
      "precipitation_solid_samples": [
        "accumulation out of range",
        "accumulation out of range"
      ]
    }
  }
}

也许ActiveModel::Serializer子类可以直接执行此操作。但如果没有,是否有某种方法可以在创建错误对象时检查序列化程序中定义的关联?

1 个答案:

答案 0 :(得分:0)

这个问题的最初动机是找到错误序列化的属性。相反,在通过查看Deefour上面提到的GitHub问题找不到解决此问题的方法后,我们切换到ActiveRecord::Reflection以查找错误以搜索和序列化错误。