小编use*_*972的帖子

询问Ruby数组的哈希值

我需要在Ruby中按年龄分组人员.我有他们的出生日期,以及一种多年回归年龄的方法.所以像这样的解决方案有效.

case
when (0..15).cover?(age_years)
  'child'
when (16..24).cover?(age_years)
  '16 to 24'
when (25..34).cover?(age_years)
  '25 to 34'
when (35..44).cover?(age_years)
  '35 to 44'
when (45..54).cover?(age_years)
  '45 to 54'
when (55..64).cover?(age_years)
  '55 to 64'
when age_years > 64
  'really old'
else
  'unknown'
end
Run Code Online (Sandbox Code Playgroud)

但是,我正在努力学习Ruby,并且正在寻找更优雅的解决方案.我想把age_ranges放到像这样的哈希数组中......

age_ranges = [{ name: 'child', min_age: 0, max_age: 15 },
              { name: '16 to 24', min_age: 16, max_age: 24 }]
Run Code Online (Sandbox Code Playgroud)

但我不知道如何查询这些数据以返回正确的名称,其中age_years在适当的范围内,甚至是这样的范围

age_ranges = [{ name: 'child', age_range: '0..15' },
              { name: '16 to 24', age_range: '16..24' }]
Run Code Online (Sandbox Code Playgroud)

看起来更整洁,但我不知道我是否写了胡言乱语,因为我不知道如何在年龄匹配时提取名称.

有人能指出我正确的方向吗?

ruby ruby-on-rails

3
推荐指数
2
解决办法
78
查看次数

Rails - 按值对记录进行计数

我正在尝试根据列中的值对记录进行分组,因此我可以使用它在其他地方显示信息。目前,如果我指定列中的值,我就可以正常工作 -

@city_count = People.select('city,count(*)').where("city in ('london', 'paris')").group(:city).count
Run Code Online (Sandbox Code Playgroud)

如果我想要伦敦和巴黎的人员列表,但如果城市列表中还有悉尼、纽约、里约热内卢等,那么我不想继续将额外的城市添加到“城市”中,我会喜欢这个就可以找到每个城市选择的人。

有谁知道这样做的最佳方法?另外,如果它也可以包含 NULL 值。

group-by ruby-on-rails count

2
推荐指数
1
解决办法
3552
查看次数

标签 统计

ruby-on-rails ×2

count ×1

group-by ×1

ruby ×1