Rails将数据放入数组内的ActiveRecord对象中

时间:2011-12-21 15:27:11

标签: ruby-on-rails-3.1

好的,我知道这个令人费解的头衔,但情况如下:

我有一个返回类似的查询(failed_by_apps = Search.failed_by_app):

s.each_with_index { |item, i| puts "index: #{i} item: #{item}" }
index: 0 item: #<Search:0x007faf858da068>
index: 1 item: #<Search:0x007faf858d9cd0>
index: 2 item: #<Search:0x007faf858d9960>
index: 3 item: #<Search:0x007faf858d95a0>

每个搜索项都是一个ActiveRecord项,其中包含以下内容:

s.each { |item| puts "#{item.app}: #{item.appFailed}"  }
book: 23885
dvd: 9563
cd: 4850
game: 629

当我尝试在不执行.each循环的情况下获取appFailed的值时出现问题。看,我有另外一些代码,我想将来自不同查询的信息组合成一个哈希,它看起来像这样:

i = 0
appTotals.each do |app| 
    @appHash[app.app] =  {"appTotal" => app.appTotal, "percent" => failed_by_apps[i].appFailed }   
    i += 1  
end

这有效,但我认为肯定会有一种更好(更优雅)的做法吗?

修改 请忽略以前关于数学的问题,我只是想找出一个更好的方法来获取fail_by_apps [x]中的值.appFailed

1 个答案:

答案 0 :(得分:0)

我仍然对完全你想要的东西感到有些困惑,但希望我们能够实现渐进式的改进。这是一个起点呢?

failed_by_apps.map(&:appFailed)
# => [23885, 9563, 4850, 629]