gpt4 book ai didi

ruby-on-rails - 将 ActiveRecord 查询作为变量返回,而不是散列?

转载 作者:数据小太阳 更新时间:2023-10-29 07:31:14 26 4
gpt4 key购买 nike

我正在对这样的模型进行 ActiveRecord 查找

@foo = MyModel.find(:all, :select => 'year')

如您所见,我只需要其中的年份列,所以我的理想输出是

["2008", "2009", "2010"]

相反,我得到了模型的哈希值,每个模型都包含年份,如下所示:

[#<MyModel year: "2008">, #<MyModel year: "2009">, #<MyModel year: "2010">]

我可以循环遍历它以将其转换为我理想的输出:

@years = []
for bar in @foo
@years.push(bar.year)
end

但是有没有一种方法可以检索这个结果呢? (即不经过额外处理?)。如果没有,有什么更简洁的方式来做这个处理?

谢谢。

最佳答案

尝试:

@foo = MyModel.find(:all, :select => 'year').map(&:year)

您还可以对结果调用 .uniq() 以删除重复项。

@foo = MyModel.find(:all, :select => 'year').map(&:year).uniq

这是

的缩写形式
@foo = MyModel.find(:all, :select => 'year').map{ |model| model.year }

这遍历 MyModel 数组并在 block (model.year) 中创建一个新的返回值数组。

或更短的代码,但首先从 db 调用所有内容:

@foo = MyModel.all.map(&:year)

关于ruby-on-rails - 将 ActiveRecord 查询作为变量返回,而不是散列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3134910/

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