我有一个分层的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
子类可以直接执行此操作。但如果没有,是否有某种方法可以在创建错误对象时检查序列化程序中定义的关联?
答案 0 :(得分:0)
这个问题的最初动机是找到错误序列化的属性。相反,在通过查看Deefour上面提到的GitHub问题找不到解决此问题的方法后,我们切换到ActiveRecord::Reflection以查找错误以搜索和序列化错误。