Как отфильтровать массив с диапазоном дат? - PullRequest
0 голосов
/ 28 мая 2018
array = [#<Product id: 206, product: "first product", created_at: "2018-05-28 09:50:26", updated_at: "2018-05-28 09:50:26">, #<Product id: 207, product: "second product" ,created_at: "2018-05-28 09:50:46", updated_at: "2018-05-28 09:50:46"]

params[:from_date] = "2018-04-28 09:50:26"

params[:to_date] = "2018-05-28 09:50:46"

Я фильтрую указанный массив со следующими параметрами (params[:from_date], params[:to_date]), используя приведенный ниже оператор select.

array.select { |product| product.created_at >= params[:from_date] && product.created_at <= params[:to_date] }

Я думаю, что есть более эффективные методы, чем приведенные выше.

Существуют ли другие способы более эффективного решения этой проблемы?

1 Ответ

0 голосов
/ 28 мая 2018

Думали ли вы об улучшении SQL-запроса?Похоже, ваш массив содержит Products, которые являются результатом запроса типа Product.all.Может быть, вы можете изменить это на что-то вроде:

Product.where("created_at >= :from_date AND created_at <= :to_date",
  {from_date: params[:from_date], to_date: params[:to_date]})

Я думаю, что это более эффективный подход, потому что вы улучшите производительность своего приложения.И с моей точки зрения код выглядит более понятным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...