3

階層的な 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サブクラスはこれを直接行うことができます。しかし、そうでない場合、エラー オブジェクトを作成するときにシリアライザーで定義された関連付けを検査する方法はありますか?

4

1 に答える 1

0

この質問の最初の動機は、エラーのシリアル化の属性を見つけることでした。代わりに、上記の Deefour によって指摘された GitHub の問題を見て、この問題の解決策を見つけられなかった後、ActiveRecord::Reflectionに切り替えてエラーを見つけ、エラーを検索してシリアル化しました。

于 2013-02-04T16:32:09.680 に答える