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

使用.select或.map从activerecord模型中获取名称数组

如何解决《使用.select或.map从activerecord模型中获取名称数组》经验,为你挑选了1个好方法。

我试图从基于搜索查询的activerecord模型中获取一组名称.

我的项目模型中有这个方法.

def self.search(search)
    if search
      where(['lower(name) LIKE ?', "%#{search}%"])
    else
      Item.all
    end
  end

我试图找出使用这两行之间的区别,他们都返回相同的东西.

Item.search('ex').select('name').map(&:name) VS Item.search('ex').map(&:name)



1> K M Rakibul ..:
Item.search('ex').select('name').map(&:name)

在上面的语句中,您只选择name结果中的列Item.search('ex'),然后使用它来获取所有列的名称.map(&:name).

但是,在以下声明中:

Item.search('ex').map(&:name)

您没有选择name列,只是.map(&:name)从结果中获取名称Item.search('ex').

是的,他们返回完全相同的结果.

因此,如果您只想从搜索结果中获取名称数组,那么选择名称列是多余的.跟着这个:

Item.search('ex').map(&:name)

或者,甚至更好,使用采摘:

Item.search('ex').pluck(:name)

它绕过了实例化每个ActiveRecord对象的需要,而只是直接返回查询的值Array,从而提高了执行时间和内存消耗方面的性能.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有