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] }
我认为有比以上更有效的方法。
还有其他方法可以更有效地解决这个问题吗?
答案 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]})
我认为这是一种更有效的方法,因为您可以提高应用性能。从我的观点来看,代码看起来更容易理解。