class Decidim::Meetings::QuestionnaireUserAnswers

A class used to collect user answers for a questionnaire

def self.for(questionnaire)

questionnaire - a Questionnaire object

Syntactic sugar to initialize the class and return the queried objects.
def self.for(questionnaire)
  new(questionnaire).query
end

def initialize(questionnaire)

questionnaire = a Questionnaire object

Initializes the class.
def initialize(questionnaire)
  @questionnaire = questionnaire
end

def query

Finds and group answers by user for each questionnaire's question.
def query
  answers = Answer.joins(:question).where(questionnaire: @questionnaire)
  answers.sort_by { |answer| answer.question.position }.group_by(&:user).values
end