2012-05-02 4 views
0

私はここにいくつかの要素を含むクエリを持っています。その結果、私の脳は私の耳を登っています。私は値としてキーと数値としてシンボルが埋め込まれたハッシュを持っていますが、ハッシュはmethod_missingによるメソッドとSQLクエリからの結果の両方のためのストレージとして使用されます。 SQLクエリの実行Regexを使用してソートされたハッシュの値を集計するレール

@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} 

とがあり、それが保存されますどのように多くの男性のアフリカの上級管理職の数を収集します。それはどのように見えるかの例。今ではジェンダーやレースに関係なく、そこに何人の上級管理職がいるのかを示すコラムを作成しようとしています。私はこのような何かを考えていた。この-NOTE

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

end 

<を私はこの方法を

を終了していない立ち往生していますどこで、今私の問題は、上記のコードは、キー/値のペアを通過し、選び出すますきますどのものがパラメータで指定されているのか、私は注入しようとしていましたが、キーに異なる名前がある場合、それらのキーの値をどのように合計できますか? (シニア)ee_demographics_presenter.extract_position_totals @ と任意のヘルプははるかに高く評価され、それは=> 5

を返すがあります。私はこのような何かを呼び出すしたいと思い、一日の終わりにそう

。 :D

答えて

1

ワンライナー:

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

使用キーは別の名前を持っている場合、これらのキーの合計値を取得する:注入と

not_match_count = 0 
@data.map{|k, v| not_match_count+=v if !k.to_s.match(/#{position}/)} 
関連する問題