Sha256: b62ada973b34f1399bbeca9b5f90b13caeca3fc20da600323b747cf8430b864e

Contents?: true

Size: 1.18 KB

Versions: 11

Compression:

Stored size: 1.18 KB

Contents

class Question < ActiveRecord::Base
  
  # Associations
  belongs_to :survey_section
  belongs_to :question_group
  has_many :answers, :order => "display_order ASC" # 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.is_met?(response_set) : true
  end
  def css_class(response_set)
    [(dependent? ? "dependent" : nil), (triggered?(response_set) ? nil : "hidden"), custom_class].compact.join(" ")
  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

11 entries across 11 versions & 1 rubygems

Version Path
surveyor-0.9.10 app/models/question.rb
surveyor-0.9.9 app/models/question.rb
surveyor-0.9.8 app/models/question.rb
surveyor-0.9.7 app/models/question.rb
surveyor-0.9.6 app/models/question.rb
surveyor-0.9.5 app/models/question.rb
surveyor-0.9.4 app/models/question.rb
surveyor-0.9.3 app/models/question.rb
surveyor-0.9.2 app/models/question.rb
surveyor-0.9.1 app/models/question.rb
surveyor-0.9.0 app/models/question.rb