階層的な Rails モデルがあります。検証されると、モデルの各インスタンスには、errors
検証からのエラーの配列である属性があります。これらのエラーは、エラーを生成したメイン モデルの階層に一致する JSON オブジェクトにシリアル化する必要があります。サブクラスで既に構成されている関連付けを使用して、階層モデルを走査し、エラーをオブジェクトに抽出して JSON としてクライアントに送信ActiveModel::Serializer
できるように、コードを活用する方法はありますか?ActiveModel::Serializer
これが私の階層モデルです:
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
サブクラスはこれを直接行うことができます。しかし、そうでない場合、エラー オブジェクトを作成するときにシリアライザーで定義された関連付けを検査する方法はありますか?