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

Instance Method Details

#answers_by_questionObject

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_titleObject



59
# File 'app/models/fe/concerns/answer_sheet_concern.rb', line 59

def collat_title() "" end

#complete?Boolean

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

#pagesObject



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_completeObject



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_sheetObject

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

Returns:

  • (Boolean)


48
49
50
# File 'app/models/fe/concerns/answer_sheet_concern.rb', line 48

def reference?
  false
end