正規表現を使用して、必要なキーと値のペアを選択するハッシュがあります。これが私が書いた方法です:
def extract_gender_race_totals(gender, race)
totals = @data.select {|k,v| k.to_s.match(/(#{gender})(#{race})/)}
temp = 0
totals.each {|key, value| temp += value}
temp
end
ハッシュは次のようになります。
@data = {
:number_of_african_male_senior_managers=>2,
:number_of_coloured_male_senior_managers=>0,
:number_of_indian_male_senior_managers=>0,
:number_of_white_male_senior_managers=>0,
:number_of_african_female_senior_managers=>0,
:number_of_coloured_female_senior_managers=>0,
:number_of_indian_female_senior_managers=>0,
:number_of_white_female_senior_managers=>0,
:number_of_african_male_middle_managers=>2,
:number_of_coloured_male_middle_managers=>0,
:number_of_indian_male_middle_managers=>0,
:number_of_white_male_middle_managers=>0,
:number_of_african_female_middle_managers=>0,
:number_of_coloured_female_middle_managers=>0,
:number_of_indian_female_middle_managers=>0,
:number_of_white_female_middle_managers=>0,
:number_of_african_male_junior_managers=>0,
:number_of_coloured_male_junior_managers=>0,
:number_of_indian_male_junior_managers=>0,
:number_of_white_male_junior_managers=>0,
:number_of_african_female_junior_managers=>0,
:number_of_coloured_female_junior_managers=>0,
:number_of_indian_female_junior_managers=>0,
:number_of_white_female_junior_managers=>0
}
ただし、SQLクエリの後にデータが再入力されます。
キーが何かを返すためには、キーに人種と性別の両方が含まれている必要があるように作成したいと思います。それ以外の場合は0を返す必要があります。これは正しいですか、それとも正規表現構文がオフですか?
すべてに対して0を返しますが、そうではありません。
したがって、例は次のようになります
%td.total_cell= @ee_demographics_presenter.extract_gender_race_totals("male","african")
これは4を返し、4人のアフリカ人男性マネージャーがいます。