0

나이별로 결과를 필터링하려고하고 있으며 스택에있는 누군가가 친절한 방법을 제안했습니다. 내 index 액션, 나는이 : 내가 원하는 것은 모든 사용자를 표시하고 CURRENT_USER에게 연령을 기준으로 필터링 할 수있는 옵션을 제공하는 기본입니다Rails : 필터링 결과 관련 문제

@users = User.all 
@users = User.where("birthday >= ? AND birthday <= ?", params[:min_age].to_i.years.ago + 1.day, params[:max_age].to_i.years.ago) 

. 그러나 위의 코드를 사용하면 두 번째 줄을 선택하고 자동으로 결과를 필터링합니다. 그 결과 매개 변수가 전달되지 않고 기본적으로 사용자가 표시되지 않기 때문에 생일이 오늘 또는 어제 인 사용자가 필터링됩니다. 전달 된 매개 변수가없는 경우 위의 두 번째 줄에 코드가 실행되지 않는 일부 기능을 원합니다. 매개 변수가 전달되지 않으면 기본 매개 변수를 사용할 수 있습니다.

답변

1

시도 : 아마도

@users = User.all 
@users = @users.where("birthday >= ?", params[:min_age].to_i.years.ago + 1.day) if params[:min_age] 
@users = @users.where("birthday <= ?", params[:max_age].to_i.years.ago) if params[:max_age] 

또는를 :

if params[:min_age] && params[:max_age] 
    @users = User.where("birthday >= ? AND birthday <= ?", params[:min_age].to_i.years.ago + 1.day, params[:max_age].to_i.years.ago) 
else 
    @users = User.all 
end 
+0

모두 일을. 나는 두번째 것을 가지고 갈 것이라고 생각한다. – pratski

+0

물론, 사용자가 단지 'min_age' 또는 단지'max_age' 또는 둘 모두를 선택할 수있게한다면 첫 번째 것이 더 좋다. –