lib/active_record_survey/node/answer.rb
def build_answer(question_node)
				self.survey = question_node.survey

				answer_node_maps = self.survey.node_maps.select { |i|
					i.node == self && i.parent.nil?
				}.collect { |i|
					i.survey = self.survey

					i
				}

				question_node_maps = self.survey.node_maps.select { |i| i.node == question_node && !i.marked_for_destruction? }

				# No node_maps exist yet from this question
				if question_node_maps.length === 0
					# Build our first node-map
					question_node_maps << self.survey.node_maps.build(:node => question_node, :survey => self.survey)
				end

				# Each instance of this question needs the answer hung from it
				question_node_maps.each_with_index { |question_node_map, index|
					if answer_node_maps[index]
						new_node_map = answer_node_maps[index]
					else
						new_node_map = self.survey.node_maps.build(:node => self, :survey => self.survey)
					end

					question_node_map.children << new_node_map
				}

				true
			end
def build_answer(question_node)
				self.survey = question_node.survey

				answer_node_maps = self.survey.node_maps.select { |i|
					i.node == self && i.parent.nil?
				}.collect { |i|
					i.survey = self.survey

					i
				}

				question_node_maps = self.survey.node_maps.select { |i| i.node == question_node && !i.marked_for_destruction? }

				# No node_maps exist yet from this question
				if question_node_maps.length === 0
					# Build our first node-map
					question_node_maps << self.survey.node_maps.build(:node => question_node, :survey => self.survey)
				end

				# Each instance of this question needs the answer hung from it
				question_node_maps.each_with_index { |question_node_map, index|
					if answer_node_maps[index]
						new_node_map = answer_node_maps[index]
					else
						new_node_map = self.survey.node_maps.build(:node => self, :survey => self.survey)
					end

					question_node_map.children << new_node_map
				}

				true
			end
By default - answers build off the original question node

 This allows us to easily override the answer building behaviour for different answer types