Class: Qe::Element
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Qe::Element
- Defined in:
- app/models/qe/element.rb
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
-
#all_elements ⇒ Object
include nested elements.
-
#duplicate(page, parent = nil) ⇒ Object
copy an item and all it’s children.
-
#has_response?(answer_sheet = nil) ⇒ Boolean
HUMANIZED_ATTRIBUTES = { :slug => “Variable” } def self.human_attrib_name(attr) HUMANIZED_ATTRIBUTES || super end.
- #position(page = nil) ⇒ Object
-
#ptemplate ⇒ Object
by default the partial for an element matches the class name (override as necessary).
- #question? ⇒ Boolean
- #required?(answer_sheet = nil) ⇒ Boolean
- #reuseable? ⇒ Boolean
- #set_position(position, page = nil) ⇒ Object
Class Method Details
.max_label_length ⇒ Object
148 149 150 |
# File 'app/models/qe/element.rb', line 148 def Element.max_label_length @@max_label_length ||= Element.columns.find{ |c| c.name == "label" }.limit end |
Instance Method Details
#all_elements ⇒ Object
include nested elements
136 137 138 139 140 141 142 |
# File 'app/models/qe/element.rb', line 136 def all_elements if respond_to?(:elements) (elements + elements.collect(&:all_elements)).flatten else [] end end |
#duplicate(page, parent = nil) ⇒ Object
copy an item and all it’s children
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'app/models/qe/element.rb', line 116 def duplicate(page, parent = nil) new_element = self.class.new(self.attributes) case parent.class.to_s when ChoiceField new_element.conditional_id = parent.id when QuestionGrid, QuestionGridWithTotal new_element.question_grid_id = parent.id end new_element.save(:validate => false) PageElement.create(:element => new_element, :page => page) unless parent # duplicate children if respond_to?(:elements) && elements.present? elements.each {|e| e.duplicate(page, new_element)} end new_element end |
#has_response?(answer_sheet = nil) ⇒ Boolean
HUMANIZED_ATTRIBUTES =
:slug => "Variable"
def self.human_attrib_name(attr)
HUMANIZED_ATTRIBUTES[attr.to_sym] || super
end
80 81 82 |
# File 'app/models/qe/element.rb', line 80 def has_response?(answer_sheet = nil) false end |
#position(page = nil) ⇒ Object
88 89 90 91 92 93 94 |
# File 'app/models/qe/element.rb', line 88 def position(page = nil) if page page_elements.where(:page_id => page.id).first.try(:position) else self[:position] end end |
#ptemplate ⇒ Object
by default the partial for an element matches the class name (override as necessary)
111 112 113 |
# File 'app/models/qe/element.rb', line 111 def ptemplate self.class.to_s.underscore end |
#question? ⇒ Boolean
106 107 108 |
# File 'app/models/qe/element.rb', line 106 def question? self.kind_of?(Question) end |
#required?(answer_sheet = nil) ⇒ Boolean
84 85 86 |
# File 'app/models/qe/element.rb', line 84 def required?(answer_sheet = nil) super() end |
#reuseable? ⇒ Boolean
144 145 146 |
# File 'app/models/qe/element.rb', line 144 def reuseable? (self.is_a?(Question) || self.is_a?(QuestionGrid) || self.is_a?(QuestionGridWithTotal)) end |
#set_position(position, page = nil) ⇒ Object
96 97 98 99 100 101 102 103 104 |
# File 'app/models/qe/element.rb', line 96 def set_position(position, page = nil) if page pe = page_elements.where(:page_id => page.id).first pe.update_attribute(:position, position) if pe else self[:position] = position end position end |