3

我有一个分层的 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子类可以直接做到这一点。但如果没有,当我创建错误对象时,是否有某种方法可以检查序列化程序中定义的关联?

4

1 回答 1

0

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

于 2013-02-04T16:32:09.680 回答