Sha256: 30c8b4105b2cf15ccf8d3127c9ecc0c85a342c9dd84ddbff4d67529eb9603019

Contents?: true

Size: 1.22 KB

Versions: 9

Compression:

Stored size: 1.22 KB

Contents

class Question < ActiveRecord::Base
  
  # Associations
  belongs_to :survey_section
  belongs_to :question_group
  has_many :answers # it might not always have answers
  has_one :dependency

  # Scopes
  default_scope :order => "display_order ASC"
  
  # Validations
  validates_presence_of :text, :survey_section_id, :display_order
  validates_inclusion_of :is_mandatory, :in => [true, false]
  
  # Instance Methods
  def initialize(*args)
    super(*args)
    default_args
  end
  
  def default_args
    self.is_mandatory ||= true
    self.display_type = "default"
    self.pick = "none"
  end
  
  def mandatory?
    self.is_mandatory == true
  end
  
  def dependent?
    self.dependency != nil
  end
  def triggered?(response_set)
    dependent? ? self.dependency.met?(response_set) : true
  end
  def dep_class(response_set)
    dependent? ? triggered?(response_set) ? "dependent" : "hidden dependent" : nil
  end
  def dependency_satisfied?(response_set)
    self.has_dependency? and self.dependency.met?(response_set)
  end
  
  def part_of_group?
    !self.question_group.nil?
  end

  def renderer(g = question_group)
    r = [g ? g.renderer.to_s : nil, display_type].compact.join("_")
    r.blank? ? :default : r.to_sym
  end
  
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
surveyor-0.6.9 app/models/question.rb
surveyor-0.6.8 app/models/question.rb
surveyor-0.6.7 app/models/question.rb
surveyor-0.6.6 app/models/question.rb
surveyor-0.6.5 app/models/question.rb
surveyor-0.6.4 app/models/question.rb
surveyor-0.6.3 app/models/question.rb
surveyor-0.6.2 app/models/question.rb
surveyor-0.6.1 app/models/question.rb