在我的应用程序中,我有一个名为的数组@apps
,它由 ActiveRecord 加载,其中包含应用程序名称、环境等的记录。
我目前正在使用@apps.count
来获取阵列中的应用程序数量,但我无法计算阵列中的应用程序数量,其中environment = 0
.
我试过@apps.count(0)
了,但没有奏效,因为每条记录都有多个字段。
我也尝试过类似的东西,@apps.count{ |environment| environment = 0}
但什么也没发生。
有什么建议么?
在我的应用程序中,我有一个名为的数组@apps
,它由 ActiveRecord 加载,其中包含应用程序名称、环境等的记录。
我目前正在使用@apps.count
来获取阵列中的应用程序数量,但我无法计算阵列中的应用程序数量,其中environment = 0
.
我试过@apps.count(0)
了,但没有奏效,因为每条记录都有多个字段。
我也尝试过类似的东西,@apps.count{ |environment| environment = 0}
但什么也没发生。
有什么建议么?
只需使用select
缩小到您想要的范围:
@apps.select {|a| a.environment == 0}.count
但是,如果这是基于 ActiveRecord 的,那么您最好只限制初始查询,除非您当然需要所有记录并且只是出于不同目的以不同方式过滤它们。
我会假设您的模型是调用App
的,因为您将它们放入@apps
:
App.where(environment: 0).count
你有错误的变量。此外,您有分配而不是比较。
@apps.count{|app| app.environment == 0}
或者
@apps.count{|app| app.environment.zero?}
我会在这里使用reduce
OR each_with_object
:
减少文档:
@apps.reduce(Hash.new(0)) do |counts, app|
counts[app.environment] += 1
counts
end
@apps.each_with_object(Hash.new(0)) do |app, counts|
counts[app.environment] += 1
end
如果您能够查询,请使用 sql
App.group(:environment).count
将返回一个散列,其中键作为环境,值作为计数。