Module: EnrollmentValidations
- Included in:
- Enrollment
- Defined in:
- app/models/enrollment_validations.rb
Overview
Simply extracted some code to clean up model. I’d like to do this to all of the really big classes but let’s see how this goes first.
Class Method Summary collapse
Class Method Details
.included(base) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'app/models/enrollment_validations.rb', line 7 def self.included(base) # Must delay the calls to these ActiveRecord methods # or it will raise many "undefined method"s. base.class_eval do validates_presence_of :project_id validates_presence_of :project, :if => :project_id validates_uniqueness_of :project_id, :scope => [:study_subject_id], :allow_blank => true validates_length_of :notes, :maximum => 65000, :allow_blank => true validates_presence_of :ineligible_reason_id, :message => 'required if is_eligible is No', :if => :is_not_eligible? validates_absence_of :ineligible_reason_id, :message => 'not allowed unless is_eligible is No', :unless => :is_not_eligible? validates_presence_of :ineligible_reason, :if => :ineligible_reason_id validates_presence_of :ineligible_reason_specify, :message => 'required if ineligible reason is Other', :if => :ineligible_reason_is_other? validates_absence_of :ineligible_reason_specify, :message => 'not allowed unless is_eligible is No', :unless => :is_not_eligible? validates_presence_of :reason_not_chosen, :message => 'requires if is_chosen is No', :if => :is_not_chosen? validates_absence_of :reason_not_chosen, :message => 'not allowed unless is_chosen is No', :unless => :is_not_chosen? validates_presence_of :refusal_reason_id, :message => "required if consented is No", :if => :not_consented? validates_absence_of :refusal_reason_id, :message => "not allowed unless consented is No", :unless => :not_consented? validates_presence_of :refusal_reason, :if => :refusal_reason_id # validates_presence_of :consented_on, # :message => 'date is required when adding consent information', # :if => :consented? validates_presence_of :consented_on, :message => 'date is required when adding consent information', :unless => :consent_unknown? # :if => :not_consented? validates_absence_of :consented_on, :message => "not allowed if consented is blank or Don't Know", :if => :consent_unknown? validates_past_date_for :consented_on validates_presence_of :other_refusal_reason, :message => "required if refusal reason is Other", :if => :refusal_reason_is_other? validates_absence_of :other_refusal_reason, :message => "not allowed unless consented is No", :unless => :not_consented? validates_presence_of :terminated_reason, :message => "required if terminated participation is Yes", :if => :terminated_participation? validates_absence_of :terminated_reason, :message => "not allowed unless terminated participation is Yes", :unless => :terminated_participation? validates_presence_of :completed_on, :message => "required if is_complete is Yes", :if => :is_complete? validates_absence_of :completed_on, :message => "not allowed unless is_complete is Yes", :unless => :is_complete? validates_past_date_for :completed_on validates_absence_of :document_version_id, :message => "not allowed if consented is blank or Don't Know", :if => :consent_unknown? validates_presence_of :document_version, :if => :document_version_id validates_complete_date_for :consented_on, :allow_nil => true validates_complete_date_for :completed_on, :allow_nil => true validates_length_of :recruitment_priority, :maximum => 250, :allow_blank => true validates_length_of :ineligible_reason_specify, :maximum => 250, :allow_blank => true validates_length_of :other_refusal_reason, :maximum => 250, :allow_blank => true validates_length_of :reason_not_chosen, :maximum => 250, :allow_blank => true validates_length_of :terminated_reason, :maximum => 250, :allow_blank => true validates_length_of :reason_closed, :maximum => 250, :allow_blank => true validates_inclusion_of :consented, :is_eligible, :is_chosen, :is_complete, :terminated_participation, :is_candidate, :in => YNDK.valid_values, :allow_nil => true validates_inclusion_of :use_smp_future_rsrch, :use_smp_future_cancer_rsrch, :use_smp_future_other_rsrch, :share_smp_with_others, :contact_for_related_study, :provide_saliva_smp, :receive_study_findings, :in => ADNA.valid_values, :allow_nil => true # # NOTE: BEWARE of POSSIBLE strings in these comparisons. # Rails SHOULD actually convert the incoming # params (which are strings) to integers or nil. # # Return boolean of comparison # true only if is_eligible == 2 def is_not_eligible? # is_eligible.to_i == YNDK[:no] #2 is_eligible == YNDK[:no] #2 end # Return boolean of comparison # true only if is_chosen == 2 def is_not_chosen? # is_chosen.to_i == YNDK[:no] #2 is_chosen == YNDK[:no] #2 end # Return boolean of comparison # true only if consented == 1 # no longer used, I believe # def consented? # consented == 1 # end # Return boolean of comparison # true only if consented == 2 def # consented.to_i == YNDK[:no] #2 == YNDK[:no] #2 end # Return boolean of comparison # true only if consented == nil or 999 def # [nil,999,'','999'].include?(consented) # not 1 or 2 [nil,999].include?() # not 1 or 2 end # Return boolean of comparison # true only if terminated_participation == 1 def terminated_participation? # terminated_participation.to_i == YNDK[:yes] # 1 terminated_participation == YNDK[:yes] # 1 end # Return boolean of comparison # true only if is_complete == 1 def is_complete? # is_complete.to_i == YNDK[:yes] # 1 is_complete == YNDK[:yes] # 1 end end # class_eval end |