Sha256: c23f4d1947e54b1f3c55799938cb5cd77c60ab074bc517366ac58fa56587dd52

Contents?: true

Size: 1.51 KB

Versions: 13

Compression:

Stored size: 1.51 KB

Contents

class Survey < ActiveRecord::Base
  include TinyCode
  
  # Associations
  has_many :sections, :class_name => "SurveySection", :order => 'display_order'
  has_many :sections_with_questions, :include => :questions, :class_name => "SurveySection", :order => 'display_order'
  has_many :response_sets
  
  # Scopes
  named_scope :with_sections, {:include => :sections}
  
  # Validations
  validates_presence_of :title
  
  # Class methods
  def self.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
  
  # Instance methods
  def initialize(*args)
    super(*args)
    default_args
  end
  
  def default_args
    self.inactive_at ||= DateTime.now
  end
  
  def title=(value)
    self.access_code = Survey.to_normalized_string(value)
    super
  end
  
  def active?
    self.active_as_of?(DateTime.now)
  end
  def active_as_of?(datetime)
    (self.active_at.nil? or self.active_at < datetime) and (self.inactive_at.nil? or self.inactive_at > datetime)
  end  
  def activate!
    self.active_at = DateTime.now
  end
  def deactivate!
    self.inactive_at = DateTime.now
  end
  def active_at=(datetime)
    self.inactive_at = nil if !datetime.nil? and !self.inactive_at.nil? and self.inactive_at < datetime
    super(datetime)
  end
  def inactive_at=(datetime)
    self.active_at = nil if !datetime.nil? and !self.active_at.nil? and self.active_at > datetime
    super(datetime)
  end
  
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
surveyor-0.8.0 app/models/survey.rb
surveyor-0.7.1 app/models/survey.rb
surveyor-0.7.0 app/models/survey.rb
surveyor-0.6.10 app/models/survey.rb
surveyor-0.6.9 app/models/survey.rb
surveyor-0.6.8 app/models/survey.rb
surveyor-0.6.7 app/models/survey.rb
surveyor-0.6.6 app/models/survey.rb
surveyor-0.6.5 app/models/survey.rb
surveyor-0.6.4 app/models/survey.rb
surveyor-0.6.3 app/models/survey.rb
surveyor-0.6.2 app/models/survey.rb
surveyor-0.6.1 app/models/survey.rb