当前位置:  开发笔记 > 后端 > 正文

你通常如何在Rails中对项目进行排序?

如何解决《你通常如何在Rails中对项目进行排序?》经验,为你挑选了1个好方法。

我有一个名为票证的Rails应用程序示例,它可以查看和编辑出售给各个客户的虚构票证.在tickets_controller.rb里面def index,我有这个由脚手架生成的标准行:

@tickets = Ticket.find(:all)

为了按名称对门票进行排序,我发现了两种可能的方法.你可以这样做:

@tickets = Ticket.find(:all, :order => 'name')

......或者这样:

@tickets = Ticket.find(:all).sort!{|t1,t2|t1.name <=> t2.name}

(提示:Ruby文档解释了sort!它将修改它正在排序的数组,而不是sort单独的,它返回已排序的数组但保持原始不变).

你通常使用什么策略?当你可以使用.sort!相对于:order => 'criteria'语法?



1> Luke..:

使用:order => 'criteria'了简单的东西可以由数据库(即基本字母顺序或时间顺序)来完成.假设您拥有正确的索引,那么有可能比让Ruby代码更快地执行它.

我认为你应该使用该sort方法的唯一一次是你有一个复杂的属性,它是在运行时计算的,而不是存储在数据库中,就像一个基于好/坏响应或其他东西的"可信度值".在这种情况下,最好使用该sort方法,但要注意,如果你有分页,这会搞砸(每个页面都会按顺序排列ITS结果,但整个页面的组合将会出现故障).


find/paginate调用将以块(例如)20的形式获取数据.这20个将根据您拥有的任何:order子句从数据库中挑选出来,然后按您的自定义排序函数排序.这意味着页面集将按:order子句排序,每个页面按功能排序.
推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有