8

在我的应用程序中,我有一个名为的数组@apps,它由 ActiveRecord 加载,其中包含应用程序名称、环境等的记录。

我目前正在使用@apps.count来获取阵列中的应用程序数量,但我无法计算阵列中的应用程序数量,其中environment = 0.

我试过@apps.count(0)了,但没有奏效,因为每条记录都有多个字段。

我也尝试过类似的东西,@apps.count{ |environment| environment = 0}但什么也没发生。

有什么建议么?

4

3 回答 3

22

只需使用select缩小到您想要的范围:

@apps.select {|a| a.environment == 0}.count

但是,如果这是基于 ActiveRecord 的,那么您最好只限制初始查询,除非您当然需要所有记录并且只是出于不同目的以不同方式过滤它们。

我会假设您的模型是调用App的,因为您将它们放入@apps

App.where(environment: 0).count
于 2013-07-14T02:07:49.310 回答
5

你有错误的变量。此外,您有分配而不是比较。

 @apps.count{|app| app.environment == 0}

或者

 @apps.count{|app| app.environment.zero?}
于 2013-07-14T03:12:23.753 回答
1

我会在这里使用reduceOR each_with_object

减少文档

@apps.reduce(Hash.new(0)) do |counts, app| 
  counts[app.environment] += 1
  counts
end

each_with_object 文档

@apps.each_with_object(Hash.new(0)) do |app, counts| 
  counts[app.environment] += 1
end

如果您能够查询,请使用 sql

App.group(:environment).count将返回一个散列,其中键作为环境,值作为计数。

于 2017-05-04T21:07:03.787 回答