gpt4 book ai didi

ruby-on-rails - 从 ActiveRecord 模型获取 ID 列表的最佳实践

转载 作者:行者123 更新时间:2023-12-03 05:08:57 27 4
gpt4 key购买 nike

我有一个 ActiveRecord 模型 Language,其中包含 idshort_code 列(还有其他列,但它们与此问题无关) )。我想创建一个方法,该方法将给出一个短代码列表,并返回一个 ID 列表。我不关心关联,我只需要得到一个看起来像 [1, 2, 3, ...] 的数组。

我的第一个想法是做类似的事情

def get_ids_from_short_codes(*short_codes)
Language.find_all_by_short_code(short_codes.flatten, :select => 'id').map(&:id)
end

但我不确定这是否不必要地浪费时间/内存/处理。

我的问题有两个:

  1. 有没有一种方法可以运行 ActiveRecord 查找,只返回某个表列的数组,而不是实例化对象?
  2. 如果是这样,收集长度为 n 的数组而不是实例化 n ActiveRecord 对象实际上是否值得?

请注意,出于我的特定目的,n 约为 200。

最佳答案

在 Rails 3.x 中,您可以使用 pluck 方法从请求的字段返回值,而无需实例化对象来保存它们。

这会给你一个 ID 数组:

Language.where(short_code: short_codes.flatten).pluck(:id)

我应该提到,在 Rails 3.x 中,您一次只能提取一列,但在 Rails 4 中,您可以传递多列进行提取。

顺便说一下,这是一个similar answersimilar question

关于ruby-on-rails - 从 ActiveRecord 模型获取 ID 列表的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1018453/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com