0
私はクエリを高速化したい、私は自分のテーブルにインデックスを行っていません。宝石は `bullet`のように動作し、クエリのパフォーマンスを自動的に検出し、特定の列にインデックスを追加することを提案します。
しかし、インデックスを適切な場所に配置する必要はありません。
コントローラ
def search
@rooms = Room.includes(:hotel, :skus).where(id: available_rooms_ids)
end
JSONビルダー
マイJSONビルダーは、複合体の一種です。
子は親データをフェッチする必要があります。
特許はまた、その子データもフェッチする必要があります。
彼らの関係のチェーンが
- ホテルHAS_MANYルーム
- ルームHAS_MANY RoomSku
- RoomSku HAS_MANY STOCK
CODEあなたがのようなものを使用することができ
json.array!(@rooms) do |item|
json.merge! item.attributes
json.hotel item.hotel
json.room_skus do
json.array! item.skus do |sku|
next if (sku.date < @check_in_time.to_date or sku.date > @check_out_time.to_date)
json.merge! sku.attributes.merge({stock:sku.stock})
end
end
json.img_src_url item.hotel.images.last.src.url
end
end