Class: Decidim::Forms::Question

Inherits:
ApplicationRecord show all
Includes:
TranslatableResource
Defined in:
decidim-forms/app/models/decidim/forms/question.rb

Overview

The data store for a Question in the Decidim::Forms component.

Constant Summary collapse

QUESTION_TYPES =
%w(short_response long_response single_option multiple_option sorting files matrix_single matrix_multiple).freeze
SEPARATOR_TYPE =
"separator"
TITLE_AND_DESCRIPTION_TYPE =
"title_and_description"
TYPES =
(QUESTION_TYPES + [SEPARATOR_TYPE, TITLE_AND_DESCRIPTION_TYPE]).freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.log_presenter_class_for(_log) ⇒ Object



108
109
110
# File 'decidim-forms/app/models/decidim/forms/question.rb', line 108

def self.log_presenter_class_for(_log)
  Decidim::Forms::AdminLog::QuestionPresenter
end

Instance Method Details

#has_attachments?Boolean

Returns:

  • (Boolean)


100
101
102
# File 'decidim-forms/app/models/decidim/forms/question.rb', line 100

def has_attachments?
  question_type.to_s == "files"
end

#mandatory_body?Boolean

Returns:

  • (Boolean)


76
77
78
# File 'decidim-forms/app/models/decidim/forms/question.rb', line 76

def mandatory_body?
  mandatory? && !multiple_choice? && !has_attachments?
end

#mandatory_choices?Boolean

Returns:

  • (Boolean)


80
81
82
# File 'decidim-forms/app/models/decidim/forms/question.rb', line 80

def mandatory_choices?
  mandatory? && multiple_choice? && !has_attachments?
end

#matrix?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'decidim-forms/app/models/decidim/forms/question.rb', line 68

def matrix?
  %w(matrix_single matrix_multiple).include?(question_type)
end

#multiple_choice?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'decidim-forms/app/models/decidim/forms/question.rb', line 72

def multiple_choice?
  %w(single_option multiple_option sorting matrix_single matrix_multiple).include?(question_type)
end

#number_of_optionsObject



84
85
86
# File 'decidim-forms/app/models/decidim/forms/question.rb', line 84

def number_of_options
  response_options.size
end

#responses_countObject



104
105
106
# File 'decidim-forms/app/models/decidim/forms/question.rb', line 104

def responses_count
  questionnaire.responses.where(question: self).count
end

#separator?Boolean

Returns:

  • (Boolean)


92
93
94
# File 'decidim-forms/app/models/decidim/forms/question.rb', line 92

def separator?
  question_type.to_s == SEPARATOR_TYPE
end

#title_and_description?Boolean

Returns:

  • (Boolean)


96
97
98
# File 'decidim-forms/app/models/decidim/forms/question.rb', line 96

def title_and_description?
  question_type.to_s == TITLE_AND_DESCRIPTION_TYPE
end

#translated_bodyObject



88
89
90
# File 'decidim-forms/app/models/decidim/forms/question.rb', line 88

def translated_body
  Decidim::Forms::QuestionPresenter.new(self).translated_body
end