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 に答える