微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

例如,假设我有一个名为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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐