Я хочу фильтровать по стране, городу, штату, роли и тарифной карточке. Если пользователь выбирает какое-либо одно средство или любые комбинации, это должно работать. Это моя активная запись для поиска:
if params[:role].present?
if params[:role] == 'role1'
if params[:city_name].present?
@matching_c = @matching_c.where(city_name: params[:city_name])
elsif params[:state].present?
@matching_c = @matching_c.where(state: params[:state])
elsif params[:country].present?
@matching_c = @matching_c.where(country: params[:country])
end
if params[:rate_card].present?
@matching_c = @matching_c.joins(:rate_card).where("rate_cards.rate_card_type = ?", "#{params[:rate_card]}")
end
@matching_f = nil
end
if params[:role] == 'role2'
if params[:city_name].present?
@matching_f = @matching_f.where(city_name: params[:city_name])
elsif params[:state].present?
@matching_f = @matching_f.where(state: params[:state])
elsif params[:country].present?
@matching_f = @matching_f.where(country: params[:country])
end
if params[:rate_card].present?
@matching_f = @matching_f.joins(:rate_card).where("rate_cards.rate_card_type = ?", "#{params[:rate_card]}")
end
@matching_c = nil
end
else
if params[:city_name].present?
@matching_f = @matching_f.where(city_name: params[:city_name])
@matching_c = @matching_c.where(city_name: params[:city_name])
elsif params[:state].present?
@matching_f = @matching_f.where(state: params[:state])
@matching_c = @matching_c.where(state: params[:state])
elsif params[:country].present?
@matching_c = @matching_c.where(country: params[:country])
@matching_f = @matching_f.where(country: params[:country])
end
if params[:rate_card].present?
@matching_c = @matching_c.joins(:rate_card).where("rate_cards.rate_card_type = ?", "#{params[:rate_card]}")
@matching_f = @matching_f.joins(:rate_card).where("rate_cards.rate_card_type = ?", "#{params[:rate_card]}")
end
end
Это работает, но я хочу, чтобы это было упрощено. Кто-нибудь может помочь с этим?