Class: Fe::QuestionSheet
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Fe::QuestionSheet
- Defined in:
- app/models/fe/question_sheet.rb
Class Method Summary collapse
-
.new_with_page ⇒ Object
create a new form with a page already attached.
Instance Method Summary collapse
- #all_elements ⇒ Object
-
#duplicate ⇒ Object
Pages get duplicated Question elements get associated non-question elements get cloned.
- #elements ⇒ Object
- #questions ⇒ Object
-
#questions_count ⇒ Object
count all questions including ones inside a grid.
Class Method Details
.new_with_page ⇒ Object
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_elements ⇒ Object
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 |
#duplicate ⇒ Object
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 |
#elements ⇒ Object
41 42 43 |
# File 'app/models/fe/question_sheet.rb', line 41 def elements pages.collect(&:elements).flatten end |
#questions ⇒ Object
37 38 39 |
# File 'app/models/fe/question_sheet.rb', line 37 def questions all_elements.questions end |
#questions_count ⇒ Object
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 |