1
배열의 개체를 필터링해야합니다."SQL 쿼리와 같은"많은 매개 변수가있는 배열 필터링
(need_bedrooms_min >= :nb_bedrooms_min) AND (budget_amount BETWEEN :budget_min AND :budget_max) AND ((need_surface_min BETWEEN :surface_min AND :surface_max) OR (need_surface_max BETWEEN :surface_min AND :surface_max))"+req,{nb_bedrooms_min: params[:nb_bedrooms_min], budget_min: params[:budget_min], budget_max: params[:budget_max],surface_min: params[:surface_min], surface_max: params[:surface_max]}).paginate(:page => params[:page])
나는 해결책을 찾을 해달라고 ... 누군가가 나를 도울 수 :
그것은 하나 개의 매개 변수
@usersc = @usersb.select { |user| user.need_appartment? }
하지만 난 SQL/액티브에보다 더 많은 매개 변수를 사용하려는 작동? 더 깨끗하게
@usersb.select do |user|
user.need_bedrooms_min >= params[:nb_bedrooms_min].to_i &&
(params[:budget_min].to_i..params[:budget_max].to_i).include? user.budget_amount &&
((params[:surface_min].to_i..params[:surface_max].to_i).include? user.need_surface_min ||
(params[:surface_min].to_i..params[:surface_max].to_i).include? user.need_surface_max)
end
을 또는 :
F.
을하거나 속하지 않는 경우 모델 메서드에서 람다 ('the_ones_i_want = lambda {...}')와'@ usersb.select (& the_ones_i_want)'대신에 그것을 던져라. 또는 컨트롤러 메소드와'@ usersb.select (& method (: the_ones_i_want))'에 로직을 숨긴다. –