在不重新查询数据库的情况下重新排序rails中的活动记录?

例如,假设我有一个名为Products的模型,在Products控制器中,我有product_list视图的以下代码来显示已排序的产品。

@products = Product.order(params[:order_by]) 

让我们假设在product_list视图中,用户可以使用下拉列表按价格,评级,权重等进行排序。 数据库中的产品不会经常更改。

我很难理解的是,每次用户选择新的order_byfilter时rails是否必须查询,或者rails是否能够以某种方式缓存活动记录以便在服务器端重新排序? 有没有办法写它,所以如果用户排序,rails将不会重新查询结果? (即,如果产品表不经常更改,那么如果用户只想按其他变量排序,则无法进行查询)

谢谢,

您可能正在寻找sort_by方法。 它允许您在服务器端对集合进行排序,而无需使用任何活动记录查询。

此代码结果:

 @products = Product.all @products = @products.sort_by {|product| product.name} # Ruby Sorting 

应该是一样的

 @products = Product.order(:name) # SQL sorting