Class: Fe::QuestionSheet

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/fe/question_sheet.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.new_with_pageObject

create a new form with a page already attached



26
27
28
29
30
# File 'app/models/fe/question_sheet.rb', line 26

def self.new_with_page
  question_sheet = self.new(:label => next_label)
  question_sheet.pages.build(:label => 'Page 1', :number => 1)
  question_sheet
end

Instance Method Details

#all_elementsObject



45
46
47
48
# File 'app/models/fe/question_sheet.rb', line 45

def all_elements
  element_ids = pages.pluck(:all_element_ids).compact.join(',').split(',')
  element_ids.present? ? Element.where(id: element_ids).order(element_ids.collect{ |id| "id=#{id} DESC" }.join(', ')) : Element.where("1 = 0")
end

#duplicateObject

Pages get duplicated Question elements get associated non-question elements get cloned



53
54
55
56
57
58
59
60
61
# File 'app/models/fe/question_sheet.rb', line 53

def duplicate
  new_sheet = QuestionSheet.new(self.attributes.merge(id: nil))
  new_sheet.label = self.label + ' - COPY'
  new_sheet.save(:validate => false)
  self.pages.each do |page|
    page.copy_to(new_sheet)
  end
  new_sheet
end

#elementsObject



41
42
43
# File 'app/models/fe/question_sheet.rb', line 41

def elements
  pages.collect(&:elements).flatten
end

#questionsObject



37
38
39
# File 'app/models/fe/question_sheet.rb', line 37

def questions
  all_elements.questions
end

#questions_countObject

count all questions including ones inside a grid



33
34
35
# File 'app/models/fe/question_sheet.rb', line 33

def questions_count
  all_elements.questions.count
end