Rails将使用Regex排序的哈希值相加

时间:2012-05-02 12:34:23

标签: ruby regex select hash inject

我在这里有一个涉及一些元素的查询,因此我的大脑正在爬出我的耳朵。我有一个哈希,其中填充符号作为键,数字作为值,哈希用作方法的存储(通过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 

< -note这是我被困的地方这个方法没有完成

现在我的问题出现了上面的代码将通过键/值对并挑选出在参数中指定的那些,我将要注入,但是如何在键将具有这些键的值时不同的名字??

所以在一天结束时我想打电话给这样的话:     @ ee_demographics_presenter.extract_position_totals(高级) 并让它返回=> 5

非常感谢任何帮助。 :d

2 个答案:

答案 0 :(得分:1)

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

not_match_count = 0
@data.map{|k, v| not_match_count+=v if !k.to_s.match(/#{position}/)}

答案 1 :(得分:1)

带注射的一个衬垫:

def extract_position_totals(position)
   @data.inject(0) { |memo, ary| ary[0] =~ /#{position}/ ? memo + ary[1] : memo }
end