2012-04-20 5 views
0

일부 작은 JSON 개체 (주로 작은 리소스, 공상은 아닙니다)를 반환하는 작은 API를 개발했지만 API 중 하나를 확장해야하는 상황에 있습니다. 엔드 포인트는 현재 존재하는 것 이상을 반환합니다.레일 3 : 동적 기반 MySQL 쿼리에 대한 매개 변수를 반복합니다.

예를 들어

이 - 현재, 나는 내 경로에 다음과 같은 한 :

resources :school_types do 
     resources :schools 
     end 

을 따라서, 사용자가 /api/v1/school_types/1/schools.json 학교의 전체 목록이 다시 school_type_id

음에 따라 올 것이다 액세스하는 경우, I 이제 조금 더 가져 가서 다음을 수행하고 싶습니다. /api/v1/school_types/1/schools.json?param_1=foo&param_2=bar

그래서 ActiveRecord을 호출하면 동적으로 생성됩니다. 전달 된 매개 변수를 기반으로 SQL 쿼리를 먹은 이것은 내가 지금까지 무엇을 가지고

:. 분명히 " = [\"state_id\", \"1\"] AND = [\"district_id\", \"1\"] AND = [\"school_type_id\", \"1\"] AND "

내가 뭔가 잘못하고있는 중이 야 LOL :

conditions = "" 
     params.except(:controller, :format, :action).each_with_index do |value, index| 
     conditions << "#{params[index]} = #{value} AND " 
     end 

이 조건 변수 출력은 .

답변

2

직접 굴림이 아닌 MetaSearch 같은 도구를 사용하는 것이 좋습니다. 귀하의 현재 구현은 SQL 주입 공격의 영향을 크게받습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 네가 제안한 보석에 대해 살펴볼 것이다. 이 일이 너무 좋아질 것입니까? http://stackoverflow.com/a/6421870/282343 – dennismonsewicz

+0

예. 지원해야하는 매개 변수의 수에 따라 MetaSearch를 구현하는 것보다 사용자 지정 범위를 사용하는 것이 더 간단 할 수 있습니다. 중요한 것은 단순히 문자열을 연결하고 보간하는 것보다는 Rails 메서드를 사용하여 쿼리를 어셈블하는 것입니다. – Brandan

관련 문제