Module: Surveyor::Models::SurveyMethods
- Included in:
- Survey
- Defined in:
- lib/surveyor/models/survey_methods.rb
Class Method Summary collapse
Instance Method Summary collapse
- #activate! ⇒ Object
- #active? ⇒ Boolean
- #active_as_of?(date) ⇒ Boolean
- #as_json(options = nil) ⇒ Object
- #deactivate! ⇒ Object
- #default_args ⇒ Object
-
#initialize(*args) ⇒ Object
Instance methods.
- #title=(value) ⇒ Object
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 |
# File 'lib/surveyor/models/survey_methods.rb', line 7 def self.included(base) # Associations base.send :has_many, :sections, :class_name => "SurveySection", :order => 'display_order', :dependent => :destroy base.send :has_many, :sections_with_questions, :include => :questions, :class_name => "SurveySection", :order => 'display_order' base.send :has_many, :response_sets # Scopes base.send :scope, :with_sections, {:include => :sections} @@validations_already_included ||= nil unless @@validations_already_included # Validations base.send :validates_presence_of, :title base.send :validates_uniqueness_of, :survey_version, :scope => :access_code, :message => "survey with matching access code and version already exists" @@validations_already_included = true end # Whitelisting attributes base.send :attr_accessible, :title, :description, :reference_identifier, :data_export_identifier, :common_namespace, :common_identifier, :css_url, :custom_class, :display_order # Class methods base.instance_eval do def to_normalized_string(value) # replace non-alphanumeric with "-". remove repeat "-"s. don't start or end with "-" value.to_s.downcase.gsub(/[^a-z0-9]/,"-").gsub(/-+/,"-").gsub(/-$|^-/,"") end end end |
Instance Method Details
#activate! ⇒ Object
64 65 66 67 |
# File 'lib/surveyor/models/survey_methods.rb', line 64 def activate! self.active_at = DateTime.now self.inactive_at = nil end |
#active? ⇒ Boolean
58 59 60 |
# File 'lib/surveyor/models/survey_methods.rb', line 58 def active? self.active_as_of?(DateTime.now) end |
#active_as_of?(date) ⇒ Boolean
61 62 63 |
# File 'lib/surveyor/models/survey_methods.rb', line 61 def active_as_of?(date) (active_at && active_at < date && (!inactive_at || inactive_at > date)) ? true : false end |
#as_json(options = nil) ⇒ Object
72 73 74 75 |
# File 'lib/surveyor/models/survey_methods.rb', line 72 def as_json( = nil) template_paths = ActionController::Base.view_paths.collect(&:to_path) Rabl.render(self, 'surveyor/export.json', :view_path => template_paths, :format => "hash") end |
#deactivate! ⇒ Object
68 69 70 71 |
# File 'lib/surveyor/models/survey_methods.rb', line 68 def deactivate! self.inactive_at = DateTime.now self.active_at = nil end |
#default_args ⇒ Object
43 44 45 46 |
# File 'lib/surveyor/models/survey_methods.rb', line 43 def default_args self.api_id ||= Surveyor::Common.generate_api_id self.display_order ||= Survey.count end |
#initialize(*args) ⇒ Object
Instance methods
38 39 40 41 |
# File 'lib/surveyor/models/survey_methods.rb', line 38 def initialize(*args) super(*args) default_args end |
#title=(value) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/surveyor/models/survey_methods.rb', line 48 def title=(value) return if value == self.title surveys = Survey.where(:access_code => Survey.to_normalized_string(value)).order("survey_version DESC") self.survey_version = surveys.first.survey_version.to_i + 1 if surveys.any? self.access_code = Survey.to_normalized_string(value) super(value) # self.access_code = Survey.to_normalized_string(value) # super end |