可以快速从数据库获取 对象的 指定字段的集合数组

比如有一个users表,要等到user的id数组:

select id from users where age > 20;

要实现在如上sql语句,在rails中有以下几种写法:

  1. User.where(‘age > 20‘).select(:id).collect(&:id)
  2. User.where(‘age > 20‘).select(:id).map(&:id)  -> SELECT id FROM `users` WHERE (age < 20)
  3. User.where(‘age > 20‘).pluck(:id)              -> SELECT `users`.`id` FROM `users` WHERE (age < 20)

前两种方法是一样的,都是从数据库中查出数据,然后进行循环,从active record的数据集取出id组成数组。

而pluck方法则是只查id字段,直接返回id的数组,而不是返回active record的数据集,这样我们就不需要再用循环取出id数组。

通常、pluck方法的效率要比上面那两种办法高。

在rails4.0以上,pluck可以传多个字段作为参数。

Person.pluck(:id, :name) -> [[1, ‘David‘], [2, ‘Jeremy‘], [3, ‘Jose‘]]

最新文章

  1. C#命名规则和编码规范
  2. jquery 20161014
  3. (进阶篇)PHP实现用户注册后邮箱验证,激活帐号
  4. jQuery.fn.extend与jQuery.extend到底区别在哪?
  5. java net编程
  6. Swift Internal Parameter and External Parameter 外部参数和内部参数
  7. 在Ubuntu 14 上安装 Nginx-RTMP 流媒体服务器
  8. media type与media query
  9. Activity使用Dialog样式导致点击空白处自动关闭的问题
  10. Java [leetcode 19]Remove Nth Node From End of List
  11. cursor_sharing
  12. Web Service 初步了解
  13. 201521123012 《Java程序设计》第十三周学习总结
  14. 深入研究-webkit-overflow-scrolling:touch及ios滚动
  15. 第31月第17天 resolveInstanceMethod
  16. 在 npm 中使用 ES6 module
  17. class-dump 使用
  18. Scala进阶之路-为什么要学习Scala以及开发环境搭建
  19. python之socket运用2
  20. Python学习笔记之函数参数传递 传值还是传引用

热门文章

  1. windows、ubuntu、centos7下mysql 的安装与使用
  2. MySQLi面向对象实践--select
  3. JavaScript 编程易错点整理
  4. idHTTP 向网站发送json格式数据
  5. ECSHOP广告调用广告位添加到首页顶部通栏教程
  6. NF5280M4 安装 Win2016 的方法
  7. VSCODE安装以及使用Python运行调试代码的简单记录
  8. 3.27PSP及体会
  9. 软件破解入门(暴力破解CrackMe)
  10. \r\n