Sha256: 95d22f63ab3a19c17724df4a3014f4a4e692a9287f02d0c0de0332c16b3a801c

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

module Rapidfire
  class Question < ActiveRecord::Base
    belongs_to :question_group, :inverse_of => :questions
    default_scope order(:position)

    validates :question_group, :question_text, :presence => true
    serialize :validation_rules

    attr_accessible :question_group, :question_text, :validation_rules, :answer_options

    def self.inherited(child)
      child.instance_eval do
        def model_name
          Question.model_name
        end
      end

      super
    end

    def rules
      validation_rules || {}
    end

    # answer will delegate its validation to question, and question
    # will inturn add validations on answer on the fly!
    def validate_answer(answer)
      if rules[:presence] == "1"
        answer.validates_presence_of :answer_text
      end

      if rules[:minimum].present? || rules[:maximum].present?
        min_max = { minimum: rules[:minimum].to_i }
        min_max[:maximum] = rules[:maximum].to_i if rules[:maximum].present?

        answer.validates_length_of :answer_text, min_max
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rapidfire-1.0.0 app/models/rapidfire/question.rb