class Decidim::Forms::DataPortabilityUserAnswersSerializer

Public Instance Methods

serialize() click to toggle source

Serializes an user answer for data portability

# File lib/decidim/forms/data_portability_user_answers_serializer.rb, line 8
def serialize
  {
    id: resource.id,
    user: {
      name: resource.user.name,
      email: resource.user.email
    },
    questionnaire: {
      id: resource.question.questionnaire.id,
      title: translated_attribute(resource.question.questionnaire.title),
      description: translated_attribute(resource.question.questionnaire.description),
      tos: translated_attribute(resource.question.questionnaire.tos)
    },
    question: {
      id: resource.question.id,
      body: translated_attribute(resource.question.body),
      description: translated_attribute(resource.question.description)
    },
    answer: normalize_body(resource)
  }
end

Private Instance Methods

attachments_for(resource) click to toggle source
# File lib/decidim/forms/data_portability_user_answers_serializer.rb, line 36
def attachments_for(resource)
  return if resource.attachments.blank?

  resource.attachments.map(&:url)
end
normalize_body(resource) click to toggle source
# File lib/decidim/forms/data_portability_user_answers_serializer.rb, line 32
def normalize_body(resource)
  attachments_for(resource) || resource.body || resource.choices.pluck(:body)
end