Ruby on rails 如何从单个ActiveRecord列中获取值列表?

Ruby on rails 如何从单个ActiveRecord列中获取值列表?,ruby-on-rails,ruby,Ruby On Rails,Ruby,代码是这样的 my_id_results = MyTable.select("some_id").as_json my_ids = [] my_id_results.each do |my_id_result| my_ids.push my_id_result['some_id'] end 返回一个哈希数组,每个哈希数组都包含id和some [ {id => nil, some_id => 1}, {id => nil, some_id => 2}

代码是这样的

my_id_results = MyTable.select("some_id").as_json
my_ids = []
my_id_results.each do |my_id_result|
  my_ids.push my_id_result['some_id']
end
返回一个哈希数组,每个哈希数组都包含
id
some

[
    {id => nil, some_id => 1},
    {id => nil, some_id => 2},
    {id => nil, some_id => 3}
]
我可以将这个数组映射到像这样的ID列表

my_id_results = MyTable.select("some_id").as_json
my_ids = []
my_id_results.each do |my_id_result|
  my_ids.push my_id_result['some_id']
end
对于这样的情况,如果我要查找单个列的值列表,是否有方法直接从ActiveRecord返回平面数组?

当然,只需使用:

当然,只要使用:

这也行

对于单个对象,我始终使用“切片”

MyTable.first.slice :some_id
(有趣的是,这将返回一个ActiveSupport::HashWithInferenceTaccess。)

这也行

对于单个对象,我始终使用“切片”

MyTable.first.slice :some_id

(有趣的是,这将返回一个ActiveSupport::HashWithInDifferenceAccess。)

MyTable.Pulk(:some_id)
MyTable.Pulk(:some_id)
任何原因给用户
切片
而不是
Pulk
?@ab11因此,在类(MyTable.all;MyTable.where(archived:true))级别,您可以使用Pulk在对象级别,(MyTable.first | MyTable.(color:'red')[0])pulk不是一个定义的方法,因此需要使用slice,就像对任何哈希进行切片一样。h={a:1,b:2};sliced=h.slice(:a)#{a:1}更正:MyTable.where(color:'red')[0](我省略了“where”)有没有理由使用用户
切片
而不是
抓取
?@ab11因此,在类(MyTable)和关系(MyTable.all;MyTable.where(archived:true))级别,您可以使用抓取(而且比使用map更详细)。在对象级别,(MyTable.first | MyTable.(颜色:'red')[0])Pulk不是一个定义的方法,所以您需要使用slice,就像对任何哈希进行切片一样。h={a:1,b:2};sliced=h.slice(:a)#{a:1}更正:MyTable.where(颜色:'red')[0](我省略了“where”)