Class: StudyEngine::Assessment
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- StudyEngine::Assessment
- Includes:
- Hashid::Rails
- Defined in:
- app/models/study_engine/assessment.rb
Class Method Summary collapse
- .by_event(event) ⇒ Object
- .by_site(site) ⇒ Object
- .by_study_id(study_id) ⇒ Object
-
.timestamp_attributes_for_create ⇒ Object
Rails 5.1.
Instance Method Summary collapse
- #by_mail? ⇒ Boolean
- #by_url? ⇒ Boolean
- #complete? ⇒ Boolean
- #coordinator_email ⇒ Object
- #current_result ⇒ Object
- #full_history ⇒ Object
- #group_index_name ⇒ Object
- #incomplete? ⇒ Boolean
- #notes? ⇒ Boolean
- #percent_complete ⇒ Object
- #restarted_assessment ⇒ Object
- #results ⇒ Object
- #results_summary ⇒ Object
- #save_answer(answer) ⇒ Object
- #stream_id ⇒ Object
-
#timestamp_attributes_for_create ⇒ Object
Rails 5.0.
Class Method Details
.by_event(event) ⇒ Object
23 24 25 |
# File 'app/models/study_engine/assessment.rb', line 23 def self.by_event event where(event: event) end |
.by_site(site) ⇒ Object
32 33 34 |
# File 'app/models/study_engine/assessment.rb', line 32 def self.by_site site where("study_id RLIKE '...-#{site}-....'") end |
.by_study_id(study_id) ⇒ Object
27 28 29 30 |
# File 'app/models/study_engine/assessment.rb', line 27 def self.by_study_id study_id return none unless study_id where(study_id: study_id) end |
.timestamp_attributes_for_create ⇒ Object
Rails 5.1
14 15 16 |
# File 'app/models/study_engine/assessment.rb', line 14 def self. super + ["assessment_updated_at"] end |
Instance Method Details
#by_mail? ⇒ Boolean
106 107 108 |
# File 'app/models/study_engine/assessment.rb', line 106 def by_mail? method_applied == "By mail" end |
#by_url? ⇒ Boolean
102 103 104 |
# File 'app/models/study_engine/assessment.rb', line 102 def by_url? method_applied == "By URL" end |
#complete? ⇒ Boolean
86 87 88 |
# File 'app/models/study_engine/assessment.rb', line 86 def complete? current_result.nil? end |
#coordinator_email ⇒ Object
42 43 44 |
# File 'app/models/study_engine/assessment.rb', line 42 def coordinator_email coordinator.try(:email) end |
#current_result ⇒ Object
70 71 72 |
# File 'app/models/study_engine/assessment.rb', line 70 def current_result results.find { |result| !result.finished? } end |
#full_history ⇒ Object
98 99 100 |
# File 'app/models/study_engine/assessment.rb', line 98 def full_history persisted_results.flat_map(&:answers).map(&:question_id) end |
#group_index_name ⇒ Object
110 111 112 113 |
# File 'app/models/study_engine/assessment.rb', line 110 def group_index_name return "" if group_index.nil? event_groups[group_index] end |
#incomplete? ⇒ Boolean
90 91 92 |
# File 'app/models/study_engine/assessment.rb', line 90 def incomplete? !complete? end |
#notes? ⇒ Boolean
54 55 56 |
# File 'app/models/study_engine/assessment.rb', line 54 def notes? notes.present? end |
#percent_complete ⇒ Object
74 75 76 |
# File 'app/models/study_engine/assessment.rb', line 74 def percent_complete (results.select(&:finished?).count / results.count.to_f * 100).round end |
#restarted_assessment ⇒ Object
46 47 48 |
# File 'app/models/study_engine/assessment.rb', line 46 def restarted_assessment Assessment.by_study_id(study_id).where(event: event).where.not(id: id).last end |
#results ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'app/models/study_engine/assessment.rb', line 60 def results @results ||= begin bank_ids = StudyEngine.bank_finder.call(self) return persisted_results if persisted_results.length == bank_ids.length bank_ids.map do |bank_id| persisted_results.find_or_initialize_by(bank_id: bank_id) end end end |
#results_summary ⇒ Object
94 95 96 |
# File 'app/models/study_engine/assessment.rb', line 94 def results_summary "#{results.select(&:finished?).count}/#{results.count}" end |
#save_answer(answer) ⇒ Object
80 81 82 83 84 |
# File 'app/models/study_engine/assessment.rb', line 80 def save_answer answer current_result.save_answer answer save! touch :assessment_updated_at end |
#stream_id ⇒ Object
50 51 52 |
# File 'app/models/study_engine/assessment.rb', line 50 def stream_id StudyID.new("STR-#{study_id.site}-#{1000 + id}") unless new_record? end |
#timestamp_attributes_for_create ⇒ Object
Rails 5.0
19 20 21 |
# File 'app/models/study_engine/assessment.rb', line 19 def super + ["assessment_updated_at"] end |