2012-11-09 2 views
2

그러나 나는 내가 것, 내가 접시를 검색 할 때 나는 결과를 얻을 라자냐검색 여러 colums 3

@countrysearch = Recipe.where(:dish_name => params[:search]).all 

그래서 말을 사용하여 내 레시피 모델에서 한 열을 검색 할 수있는 검색 양식을 recipe model, country_of_origin, difficult 및 preperation_time에서 또 다른 3 개의 열을 검색 할 수 있습니다.

나는 시도이

@countrysearch = Recipe.where({:dish_name => params[:search], :country_of_origin => params[:search], :difficulty => params[:search], :preperation_time => params[:search]}).all 

하지만이 중 하나가

사람이 제안을 제공 할 수 작동하지 않는 것?

답변

3

코드는 AND 사용하지만 당신은 내가 생각 OR를 원하는 : 당신은 SQL 문자열을 사용하지 않으려면

@countrysearch = Recipe.where("dish_name = ? OR country_of_origin = ? OR difficulty = ? OR preperation_time = ?", 
    params[:search], 
    params[:search], 
    params[:search], 
    params[:search] 
) 

당신이 arel_table 사용할 수 있습니다

at    = Recipe.arel_table 
search   = params[:search] 
@countrysearch = Recipe.where(at[:dish_name].eq(search).or(at[:country_of_origin].eq(search)).or(at[:difficulty].eq(search)).or(at[:preperation_time].eq(search))) 

그러나 현재에 대한 레일스의 버전 나는 이것이 더 읽기 쉽기 때문에 첫 번째 방법을 선호 할 것입니다. Rails 5에서는 이러한 종류의 질의를위한 더 나은 방법을 제공합니다. (이 게시물을 사용할 수있게되면이 게시물을 업데이트 할 예정입니다.)

+0

아, 이제 분명히 지적했습니다. 덕분에 대단히 결과가 돌아 왔습니다. :) – Richlewis

+0

큰 데이터베이스에서 많은 항목을 검색하려면 http://railscasts.com/episodes/120-thinking-sphinx 또는 다른 검색을 사용하는 것이 좋습니다. 엔진. – tbraun89

+0

그래,이 응용 프로그램이 커지면 뭔가 할 수 있습니다하지만 지금은 상대적으로 작아 그래서 지금은 간단하게 유지 제안을 주셔서 감사합니다 – Richlewis