ransack 述語を使用してクエリを作成しているため、SQL に関して WHERE 句に多くの条件が必要です。ransanck のsearch
メソッドの条件のハッシュとして私が持っているものは次のとおりです。
これはのコンソール出力ですparams[:q]
{"price_gteq"=>"0", "rooms_gteq"=>"1", "baths_gteq"=>"1", "has_photos_true"=>"0", "zone_id"=>"1", "deal_type_eq"=>"1", "s"=>{"0"=>{"name"=>"price", "dir"=>"asc"}}, "price_lteq"=>"2500000", "rooms_lteq"=>"2", "baths_lteq"=>"7", "sector_id_in"=>nil}
これが生成する SQL クエリです。
Property.search(params[:q]).result.to_sql
これにより、次のことが得られます。
SELECT "properties".* FROM "properties" LEFT OUTER JOIN "sectors" ON "sectors"."id" = "properties"."sector_id" WHERE (("properties"."price" >= 0.0 AND "properties"."price" <= 2500000.0)) ORDER BY "properties"."price" ASC
where
句内にすべてのフィールドを含めるにはどうすればよいですか?
ご覧のとおり、:price
フィールドだけがwhere
句内に残っています。私も節に含まれる必要が:baths
あり、含まれる必要があります。:rooms
where
どうすれば修正できますか?