В моем приложении для опроса один из методов в модели должен посчитать и сгруппировать все ответы, заданные на вопросы опроса. Возвращаемый хеш должен иметь следующий формат - {"survey_name": {"yes": 3, "no": 2, "dont_know": 1}}
Сейчас у меня есть рабочее решение, но оно кажется не очень твердым.
def report
statement = {
'yes' => 0,
'no' => 0,
'dont_know' => 0
}
@survey.questions.each do |question|
if question.answer&.value == 'yes'
statement['yes'] += 1
elsif question.answer&.value == 'no'
statement['no'] += 1
else
statement['dont_know'] += 1
end
end
{
@survey.name => statement
}
end
Не могли бы вы посоветовать, как это сделать более элегантно?