Module: Fe::AnswerSheetConcern
- Extended by:
- ActiveSupport::Concern
- Included in:
- AnswerSheet, ReferenceSheet
- Defined in:
- app/models/fe/concerns/answer_sheet_concern.rb
Instance Method Summary collapse
-
#answers_by_question ⇒ Object
answers for this sheet, grouped by question id.
- #collat_title ⇒ Object
- #complete? ⇒ Boolean
- #completely_filled_out? ⇒ Boolean
- #has_answer_for?(question_id) ⇒ Boolean
- #pages ⇒ Object
- #percent_complete ⇒ Object
-
#question_sheet ⇒ Object
Convenience method if there is only one question sheet in your system.
- #reference? ⇒ Boolean
Instance Method Details
#answers_by_question ⇒ Object
answers for this sheet, grouped by question id
27 28 29 |
# File 'app/models/fe/concerns/answer_sheet_concern.rb', line 27 def answers_by_question @answers_by_question ||= answers.group_by { |answer| answer.question_id } end |
#collat_title ⇒ Object
59 |
# File 'app/models/fe/concerns/answer_sheet_concern.rb', line 59 def collat_title() "" end |
#complete? ⇒ Boolean
22 23 24 |
# File 'app/models/fe/concerns/answer_sheet_concern.rb', line 22 def complete? !completed_at.nil? end |
#completely_filled_out? ⇒ Boolean
40 41 42 |
# File 'app/models/fe/concerns/answer_sheet_concern.rb', line 40 def completely_filled_out? pages.all? {|p| p.complete?(self)} end |
#has_answer_for?(question_id) ⇒ Boolean
44 45 46 |
# File 'app/models/fe/concerns/answer_sheet_concern.rb', line 44 def has_answer_for?(question_id) !answers_by_question[question_id].nil? end |
#pages ⇒ Object
36 37 38 |
# File 'app/models/fe/concerns/answer_sheet_concern.rb', line 36 def pages Page.where(:question_sheet_id => question_sheets.collect(&:id)) end |
#percent_complete ⇒ Object
52 53 54 55 56 57 |
# File 'app/models/fe/concerns/answer_sheet_concern.rb', line 52 def percent_complete num_questions = question_sheets.inject(0.0) { |sum, qs| qs.nil? ? sum : qs.questions.length + sum } return 0 if num_questions == 0 num_answers = answers.where("value IS NOT NULL && value != ''").select("DISTINCT question_id").count [ [ (num_answers.to_f / num_questions.to_f * 100.0).to_i, 100 ].min, 0 ].max end |
#question_sheet ⇒ Object
Convenience method if there is only one question sheet in your system
32 33 34 |
# File 'app/models/fe/concerns/answer_sheet_concern.rb', line 32 def question_sheet question_sheets.first end |
#reference? ⇒ Boolean
48 49 50 |
# File 'app/models/fe/concerns/answer_sheet_concern.rb', line 48 def reference? false end |