0

我在这里有一个涉及一些元素的查询,结果我的大脑正在爬出我的耳朵。我有一个用符号作为键和数字作为值填充的散列,该散列既用作方法的存储(通过 method_missing),也用作 SQL 查询的结果。它的外观示例:

@data = {:number_of_african_male_senior_managers => 0, :number_of_african_male_middle_managers => 2, :number_of_african_male_junior_managers => 3, :number_of_white_female_senior_managers => 5... ect}

sql 查询运行并收集有多少男性非洲高级管理人员的计数并将其保存。现在我正在尝试创建一个总列,它将向我显示总共有多少高级管理人员,无论性别或种族如何。我在想这样的事情:

 def extract_position_totals(position)
   totals = @data.select {|k,v| k.to_s.match(/#{position}/)}

 end 

<-注意这是我卡住的地方这个方法还没有完成

现在我的问题来了,上面的代码将遍历键/值对并挑选出在参数中指定的那些,我打算注入,但是当键有不同的名称时,我如何对这些键的值求和? ?

所以在一天结束时,我想这样称呼:@ee_demographics_presenter.extract_position_totals(senior) 并让它返回 =>5

任何帮助深表感谢。:D

4

2 回答 2

1

如果键具有不同的名称,则用于获取这些键的总和值:

not_match_count = 0
@data.map{|k, v| not_match_count+=v if !k.to_s.match(/#{position}/)}
于 2012-05-02T12:49:19.407 回答
1

一个带注入的衬垫:

def extract_position_totals(position)
   @data.inject(0) { |memo, ary| ary[0] =~ /#{position}/ ? memo + ary[1] : memo }
end
于 2012-05-02T13:02:58.640 回答