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”)