2016-07-29 3 views
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 

答えて

1

のように見えますを使用して、データベースに必要な索引を見つけ、その索引を作成する移行を作成します。

関連する問題