Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何对Rails中的前几项进行排序和选择_Sql_Ruby On Rails_Ruby - Fatal编程技术网

Sql 如何对Rails中的前几项进行排序和选择

Sql 如何对Rails中的前几项进行排序和选择,sql,ruby-on-rails,ruby,Sql,Ruby On Rails,Ruby,这个问题是的一种延伸,所以我将用它作为这个问题的基线 假设我有一堆票,我想把它们取出来,按名字分类。这很简单,只要做: @tickets = Ticket.find(:all, :order => 'name') 然而,有没有办法告诉票。发现我只想要第一张x票?我打赌有一种方法可以通过直接SQL实现这一点,我确信我可以只使用@tickets并将其缩短为前x个元素,但我宁愿使用直接的Ruby方法,而不获取所有的ticket(我有大量的“ticket”,我真的不想全部获取,这可能会花费大量C

这个问题是的一种延伸,所以我将用它作为这个问题的基线

假设我有一堆票,我想把它们取出来,按名字分类。这很简单,只要做:

@tickets = Ticket.find(:all, :order => 'name')
然而,有没有办法告诉票。发现我只想要第一张x票?我打赌有一种方法可以通过直接SQL实现这一点,我确信我可以只使用
@tickets
并将其缩短为前x个元素,但我宁愿使用直接的Ruby方法,而不获取所有的ticket(我有大量的“ticket”,我真的不想全部获取,这可能会花费大量CPU时间)

感谢所有的帮助,并提前表示感谢

您要做的就是:

@tickets = Ticket.find(:all, :order => 'name', :limit => x)
其中
x
是您需要的记录数


有关可在
查找中输入的更多条件,请参阅。(搜索有效的查找选项)

这只是SQL中“limit”参数的扩展。例如,
从票证订单中选择*按名称限制4
。因此,它可以在任何ORM中使用,包括ActiveRecord。

@tickets = Ticket.order('name').limit(x).all

《查询界面指南》中也介绍了这一点: