한 명령을 사용하여 모든 행을 검색하고 필터하는 방법이 있습니까?레일스가 조건 매개 변수를 사용하여 메소드를 찾는다.
그래서, 지금은 조건부 논리를
if rating_filter.nil?
@movies = Movie.all
else
@movies = Movie.find(:all, :conditions => {:rating => rating_filter})
end
즉, 필드에 필터가 설정되지 않은 경우, 나는이 분야로 필터링 싶지 않아,하지만 두 번째 명령에 nil을 전달하면, 내가 얻을 것이다 :
SELECT * FROM movies WHERE rating is NULL, though I need
SELECT * FROM movies
하나 이상의 매개 변수가있는 경우 문제가 발생합니다. 모두가 설정되어있는 경우, 그래서 아무 문제 없습니다 :
@movies = Movie.find(:all, :conditions => {:rating => rating_filter, :date => date_filter})
하지만 하나 개의 필터가 설정되지 않은 경우, 내가 별도의 명령을 얻기 위해 내 논리를 분기해야합니다
if ..
@movies = Movie.find(:all, :conditions => {:rating => rating_filter)
else
@movies = Movie.find(:all, :conditions => {:date => date_filter})
else
@movies = Movie.all
end
이 라인을 줄일 수있는 트릭이 있습니까 코드, 이상적으로 하나? =)