@john_bob

Как улучшить код?

if date_range_present? && search_query_present?
        domain_list = domain_list&.select { |hash|
          hash['date'] >= params[:from_date] &&
          hash['date'] <= params[:to_date] &&
          hash['domainName'].match(params[:search_query])
        }
      elsif date_range_present?
        domain_list = domain_list&.select { |hash|
          hash['date'] >= params[:from_date] &&
          hash['date'] <= params[:to_date]
        }
      elsif search_query_present?
        domain_list = domain_list&.select { |hash|
          hash['domainName'].match(params[:search_query])
        }
      end


Имеется такая логика,
наверняка можно ее переписать, чтобы было меньше повторений.
Подскажите пожалуста, как лучше переписать!
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
2ord
@2ord
продвинутый чайник
domain_list.select! do |hash|
  v = true
  if date_range_present?
    v &= hash['date'] >= params[:from_date]
    v &= hash['date'] <= params[:to_date]
  end
  if search_query_present?
    v &= hash['domainName'].match(params[:search_query])
  end
  v
end if date_range_present? || search_query_present?

Это не самая короткая запись. Оставил для понимания.
P.S. писал ночью с мобильного телефона, не проверял. Так что на свой страх и риск.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы