2012-11-22 2 views
0

나는 ransack 술어를 사용하여 쿼리를 작성하기 때문에 WHERE 절에 SQL을 많이 사용해야한다는 것을 의미합니다. 여기에 내가 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 절 안에 있습니다. where 절에도 :baths:rooms이 포함되어야합니다.

어떻게 해결할 수 있습니까?

답변

0

나는 무슨 일이 것은 나의 모델은 (더듬다가 제공하는 기본 정렬 방법을) 정렬 에서 상기 필드를 제외하는 나는 UNRANSACKABLE_ATTRS 배열을 사용하고 있었다이었다, 다행히 내 자신의 문제를 해결했지만, 나는하지 않았다 이것이 검색에도 영향을 미친다는 것을 알고 있습니다. 어쨌든 UNRANSACKABLE_ATTRS 배열을 제거하고 검색 조건이 예상대로 작동하기 시작했습니다. :)

관련 문제