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