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