ruby on rails 里pluck和select(map、collect)的区别

比如有一个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‘]]

时间: 2024-07-31 03:10:55

ruby on rails 里pluck和select(map、collect)的区别的相关文章

ruby on rails 网页上如何实时显示服务器网速?

要在网页上实时显示网速,需要实时请求服务器(由于许多浏览器不支持web socket,这里还是用ajax轮询的方式),这里的服务器以centos为例,使用sysstat,不同的服务器,可能需要不同的软件支持. 一.centos里安装sysstat yum  install sysstat 安装完成后,使用sar -V查看 二.sar的使用 首先使用ifconfig查看使用的网上,确认一个要查看的网卡的名称,这里我使用的是eth0 然后使用sar获取网速: sar -n DEV 1 1 | gre

ruby on rails最大优势是什么

Ruby编程语言是由日本人松本行弘开发,是一种简单快捷的面向对象编程语言,今天主要跟大家聊聊ruby框架--ruby on rails(http://www.maiziedu.com/course/ruby/),可能有些朋友不喜欢ruby,但是作为一门语言,我觉得 Ruby 还是很值得掌握和学习的. 先说说学好 Ruby 有什么好处吧. Ruby on Rails 的最大优势我觉得有四个: 1. 语言灵巧轻便,适合快速开发和部署. 2. 各种本身自带的 "magic" 以及可以通过 g

Elasticsearch 的_msearch介绍及在ruby on rails 中的使用

一.基本介绍 _msearch就是multi search API使用的末端,它可以在一个相同的api中去执行多个查询请求. 请求的格式类似于大部API的格式,它的请求格式如下: header\n body\n header\n body\n header可以包含要查询的索引(可以是多个索引),可选的映射类型,还有search_type, preference和routing. body可以包含指定的搜索请求(包括:query.aggregations.from.size等等). 例子见官网:h

[Ruby on Rails系列]4、专题:Rails应用的国际化[i18n]

1. 什么是internationalization(i18n)? 国际化,英文简称i18n,按照维基百科的定义:国际化是指在设计软件,将软件与特定语言及地区脱钩的过程.当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正. 当然,官方的定义总是十分高大上.实际上,今天我们要做的并没有那么复杂.任务是为上次的系列3里的Web站点提供多语言支持.比如上次是英语网站,这次我们可以根据用户地点自动提供中文网站或其他语言网站. 2.如何实现i18n? 2.1 Step1: 登录Clou

Ruby on Rails入门篇

Ruby是一门面向对象的脚本语言. Ruby On Rails简称为RoR或Rails,是按照MVC结构开发的开源网络应用框架.设计原则:Don't repeat yourself和Conventions over Configuration RubyGems是Ruby语言的包管理工具. 学习资料: http://guides.ruby-china.org/getting_started.html http://www.runoob.com/ruby/ruby-tutorial.html htt

ruby on rails如何安装

很多朋友在学习ruby语言时,因为才接触,对于ruby基础知识都不知道,比如ruby on rails安装等基础教程,下面就一起来看看安装ruby on rails教程(http://www.maiziedu.com/course/ruby/)吧: 第一,安装ruby,首先从 http://www.ruby-lang.org/zh_CN/downloads/ 下载 Ruby 的Windows 稳定安装版 Ruby 1.8.6 一步安装 (md5: 00540689d1039964bc8d844b

Ruby on Rails环境搭建及rubyMine安装

最近在学ruby,ruby是一种面向对象的编程语言,rails是Ruby的框架,就像java中的SSH一样.只是rails是MVC模式的.下面讲一下安装环境的过程. 安装Ruby on rails环境主要参考的是Ruby-china上面的教程贴,链接在此:https://ruby-china.org/wiki/install_ruby_guide 另外,最好在linux内核上面使用,所以开始安装前请确保有一台linux内核的机器或者虚拟机或者双系统. 1.安装Ruby 现在的ruby版本应该是2

[ruby on rails] 跟我学之创建数据

通过form来创建数据,本章节将会涉及内容:创建form,用户重导向,渲染views 和 flash消息. 1. views初步 编辑 app/views/posts/index.html.erb这个view文件,如下: <% @posts.each do |post| %> <h2><%=link_to post.title,post%></h2> <%=post.context%><br/><hr/> <% en

ruby on rails错误undefined method `title&#39; for nil:NilClass

首先搞清楚这句话,在 Ruby 中,方法分为 public.private 和 protected 三种,只有 public 方法才能作为控制器的动作. 我的出错的代码如下: controlle class ArticlesController < ApplicationController def new end def create params.permit! @article = Article.new(params[:article]) @article.save redirect_t