加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 重新排序rails中的活动记录而不重新查询数据库

发布时间:2020-12-17 04:01:38 所属栏目:百科 来源:网络整理
导读:例如,假设我有一个名为Products的模型,在Products控制器中,我有product_list视图的以下代码来显示已排序的产品. @products = Product.order(params[:order_by]) 让我们想象一下,在product_list视图中,用户可以使用下拉列表按价格,评级,权重等进行排序.数据库
例如,假设我有一个名为Products的模型,在Products控制器中,我有product_list视图的以下代码来显示已排序的产品.

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

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

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

谢谢,

解决方法

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

此代码结果:

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

应该是一样的

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读