• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

RubyonRails,链式调用order,limit,offset方法对条件查询结果进行整理 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在《Ruby on Rails,使用where方法对持久化对象进行条件查询》我们学习到可以通过where方法进行条件查询操作返回对象列表。

还有三个方法可以对返回的列表进行操作以便得到我们想要的结果集。

order方法对结果进行排序,比如将返回的对象按照名称升序排列、按照创建时间降序排列等。

limit方法对结果的数量进行限制,比如数据库中有成千上万的注册用户,我们不希望一下子把这些用户的信息都取出来,而是希望将这些用户分页显示,点击下一页才进行下一次读取。

limit方法读取第一页的N个用户,第二页需要返回的用户都需要将前面的N记录跳过,这里就用到了offset方法。

所以说,order;limit;offset方法配合使用就可以实现分页功能。

之前提到的find方法也有这三个功能比如,将所有Subject对象按照position的值升序排列后,跳过前面的40个,返回20条对象:

Subject.find(:all, :order=> "position ASC", :limit => 20, :offset => 40)

前面提到了,find已经被where替代了,并已标注了不建议使用。所以记住以后要使用where配合三个独立方法哦!

Subject.order("position").limit(20).offset(40)

limit和offset方法参数非常简单也用以理解,都是一个整数分别意味着限制记录的个数和跳过记录的个数。

order方法的参数接受一个sql语法的条件,格式是

table_name.column_name ASC/DSC

如果对象涉及一个表的话,可以不指定表名。不指定排序方向的话,缺省是升序。

不过我觉得最好还是别偷懒都写上吧,以增加程序的可读性和避免混乱。尤其是一个对象是由多个表join在一起以及各个表中有相同名字字段的时候。

所以上面的查询语句最好写成

Subject.order("subject.position ASC").limit(20).offset(40)

对于布尔值,false值是0,true值是1,排序的使用用得上。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap