사용자가 특정 name
문자열로 시작하는 이름을 가진 사람들을 검색 할 수있는 양식이 있다고 가정 해 봅시다. 예를 들어 "Mi"는 "Mike"와 "Miguel"을 찾습니다. 아마 그래서 같이 찾기 문을 만들 것입니다 : 바인딩 변수 및 선택적 매개 변수가있는 조건
find(:all, :conditions => ['name LIKE ?', "#{name}%"])
가의 양식도이 개 선택적 필드,
hair_color
추가 결과를 필터링 할 수 있습니다
eye_color
을 가지고 있다고 가정 해 봅시다. 쿼리의 이름 부분을 무시하고, 선택적 매개 변수의 임의의 수에 걸릴 수있는 사람들을위한 찾기 문은 다음과 같습니다
find(:all, :conditions => { params[:person] })
find(:all, :conditions => { :hair_color => hair_color, :eye_color => eye_color })
은 필수 "이름은"위 "와 같은"조건에 적용되는 쿼리의 두 종류와 옵션 hair_color
및 eye_color
을 병합하는 방법입니다 매개 변수 ers (그리고 아마도 다른 것들)는 결과를 더 필터링하기 위해 추가 될 수 있습니다.
필자는이 작업을 위해 쿼리 문자열을 작성할 수 있지만 필연적으로 "레일 방식"이 더 우아해야합니다. 필수 바인딩 매개 변수를 선택적 매개 변수와 병합하려면 어떻게합니까?
그냥 호기심에 도움이되기를 바랍니다. 이름 문자열을 지정하는 것이 선택 적이라면 어떻게 확장하겠습니까? – Waseem
나는 그것을 할 수있는 좋은 깨끗한 방법이 있어야한다는 것을 알고있었습니다. 항상 레일이 있습니다 :-) 감사합니다! – SingleShot
@waseem, 나는 귀하의 질문에 답하기 위해 해결책을 수정했습니다. – EmFi