各質問に と がある一連の質問がありcategory_id
ますvalue
。
category_id
これらをマッピングして、キー ( ) がハッシュに既に存在する場合、値が一緒に追加されるようにしたいと思います。
最後に、ハッシュの最大値を見つけたいと思います。
h = Hash.new {|k, v| k[v] = 0}
@test_session.answered_questions.each do |q|
if h.key?(q.category_id)
#add q.value to the value stored in the hash
else
h = { q.category_id => q.value } #insert the "q.category_id" as key and with value "q.value"
end
end
key_with_max_value = h.max_by { |k, v| v }[0] #find the highest value
@result.category = key_with_max_value
@result.score = h[key_with_max_value].value
これを達成するためのより良い方法はおそらくたくさんありますが、私は Ruby にまったく慣れていません。