0

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あり、含まれる必要があります。:roomswhere

どうすれば修正できますか?

4

1 に答える 1

0

幸いなことに、私は自分の問題を解決しました。モデルに UNRANSACKABLE_ATTRS 配列を使用して、前述のフィールドを並べ替えから除外していました (Ransack が提供するデフォルトの並べ替え方法) が、これが検索に影響することを知りませんでした。良い。とにかく、 UNRANSACKABLE_ATTRS 配列を削除すると、検索のすべての条件が期待どおりに機能し始めました。:)

于 2012-12-04T15:28:16.823 に答える