class Decidim::Meetings::CreateAnswer

This command is executed when the user creates an Answer in a meeting poll.

def answer_question

def answer_question
  answer = Answer.new(
    user: current_user,
    questionnaire: @questionnaire,
    question: form.question
  )
  form.selected_choices.each do |choice|
    answer.choices.build(
      body: choice.body || translated_attribute(AnswerOption.find_by(id: choice.answer_option_id)&.body),
      decidim_answer_option_id: choice.answer_option_id
    )
  end
  answer.save!
end

def call

Broadcasts :ok if successful, :invalid otherwise.

Creates the answer if valid.
def call
  return broadcast(:invalid) if form.invalid?
  transaction do
    answer_question
  end
  broadcast(:ok)
end

def initialize(form, questionnaire)

def initialize(form, questionnaire)
  @form = form
  @questionnaire = questionnaire
end

def invalid?

def invalid?
  form.invalid?
end