如何过滤具有日期范围的数组?

时间:2018-05-28 10:52:29

标签: ruby-on-rails ruby

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 :(得分:1)

您是否考虑过改进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]})

我认为这是一种更有效的方法,因为您可以提高应用性能。从我的观点来看,代码看起来更容易理解。