Sha256: f40ef8e00c205890d17afd2eb494ccd2f7e1aec430e8acfa9eaeeb7a8c5fd199

Contents?: true

Size: 945 Bytes

Versions: 13

Compression:

Stored size: 945 Bytes

Contents

module ActiveRecordSurvey
	class Survey < ::ActiveRecord::Base
		self.table_name = "active_record_surveys"
		has_many :node_maps, :class_name => "ActiveRecordSurvey::NodeMap", :foreign_key => :active_record_survey_id
		has_many :nodes, :through => :node_maps

		def root_node
			self.node_maps.includes(:node).select { |i| i.depth === 0 }.first
		end

		def as_map
			self.root_node.as_map(self.node_maps.includes(:node))
		end

		# Build a question with answers for this survey
		def build_question(question, answers = [], parent = nil)
			node_maps = []
			n_question = question.node_maps.build(:node => question, :survey => self)
			node_maps << n_question

			answers.each { |answer|
				n_answer = answer.node_maps.build(:node => answer, :survey => self)
				n_question.children << n_answer
				node_maps << n_answer
			}

			# If a parent node is passed, add it
			parent.children << n_question if !parent.nil?

			node_maps
		end
	end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
active_record_survey-0.1.12 lib/active_record_survey/survey.rb
active_record_survey-0.1.11 lib/active_record_survey/survey.rb
active_record_survey-0.1.10 lib/active_record_survey/survey.rb
active_record_survey-0.1.9 lib/active_record_survey/survey.rb
active_record_survey-0.1.8 lib/active_record_survey/survey.rb
active_record_survey-0.1.7 lib/active_record_survey/survey.rb
active_record_survey-0.1.6 lib/active_record_survey/survey.rb
active_record_survey-0.1.5 lib/active_record_survey/survey.rb
active_record_survey-0.1.4 lib/active_record_survey/survey.rb
active_record_survey-0.1.3 lib/active_record_survey/survey.rb
active_record_survey-0.1.2 lib/active_record_survey/survey.rb
active_record_survey-0.1.1 lib/active_record_survey/survey.rb
active_record_survey-0.1.0 lib/active_record_survey/survey.rb