例如,假设我有一个名为 Products 的模型,并且在 Products 控制器中,我有以下用于 Product_list 视图的代码来显示排序的产品。
@products = Product.order(params[:order_by])
想象一下,在产品列表视图中,用户可以使用下拉菜单按价格、评级、重量等进行排序。数据库中的产品不会经常变化。
我很难理解的是,每次用户选择新的 order_by 过滤器时,rails 是否必须进行查询,或者是否能够以某种方式缓存活动记录以在服务器端重新排序?有没有办法编写它,以便在用户排序时 Rails 不会重新查询结果? (即,如果产品表不经常更改,那么如果用户只想按不同的变量排序,则进行查询是没有意义的)
Thanks,
您可能正在寻找 sort_by 方法。它将允许您在服务器端对集合进行排序,而无需使用任何活动记录查询。
此代码结果:
@products = Product.all
@products = @products.sort_by {|product| product.name} # Ruby Sorting
应该是一样的
@products = Product.order(:name) # SQL sorting
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)