背景
深くネストされたアソシエーションを持つレールアプリケーションがあります。アクティブモデルシリアライザとの積極的なロードアソシエーション
.-< WorkPeriod
Timecard -< Week -< Day -<--< Subtotal
`-< Adjustment
-< (has many)
私は、APIを構築するためにActive Model Serializerを使用しています。
クライアント側では、タイムカードとすべての関連付けをワンショットでロードしたいと考えています。何も熱心にロードされ得ない以外
は、現在、私のシリアライザは、
class TimecardSerializer < ActiveModel::Serializer
embed :ids, include: true
has_many :weeks
end
class WeekSerializer < ActiveModel::Serializer
embed :ids, include: true
has_many :days
end
# ... etc ...
問題
このすべての作品が見つけ、このように見えます。したがって、各リクエストごとにデータベースへの呼び出しをたくさん作成することになります。毎週、その週の曜日を別々に要求します。そして、毎日、それはwork_periods、小計、および調整のための別個の要求を行います。
これは単一のリソースを読み込むのには問題ありませんが、このシリアライザを使用して 'Timecard'のリストを返すとうまくいきません。特に、 'weeks'の関連付けは行われますが、' weeks'は熱心に読み込まれません。 – hjdivad