Class: Fe::Element
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Fe::Element
- Defined in:
- app/models/fe/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” }changed.include?(‘address1’).
- #limit(answer_sheet = nil) ⇒ Object
- #page_id(page = nil) ⇒ Object
- #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
Instance Method Details
#all_elements ⇒ Object
include nested elements
118 119 120 121 122 123 124 |
# File 'app/models/fe/element.rb', line 118 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
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'app/models/fe/element.rb', line 98 def duplicate(page, parent = nil) new_element = self.class.new(self.attributes.except('id', 'created_at', 'updated_at')) case parent.class.to_s when Fe::ChoiceField new_element.conditional_id = parent.id when Fe::QuestionGrid, Fe::QuestionGridWithTotal new_element.question_grid_id = parent.id end new_element.save(:validate => false) Fe::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"
changed.include?(‘address1’)
def self.human_attrib_name(attr)
HUMANIZED_ATTRIBUTES[attr.to_sym] || super
end
39 40 41 |
# File 'app/models/fe/element.rb', line 39 def has_response?(answer_sheet = nil) false end |
#limit(answer_sheet = nil) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'app/models/fe/element.rb', line 43 def limit(answer_sheet = nil) if answer_sheet && object_name.present? && attribute_name.present? begin unless eval("answer_sheet." + self.object_name + ".nil?") klass = eval("answer_sheet." + self.object_name + ".class") column = klass.columns_hash[self.attribute_name] column.limit end rescue nil end end end |
#page_id(page = nil) ⇒ Object
79 80 81 82 83 84 85 |
# File 'app/models/fe/element.rb', line 79 def page_id(page = nil) if page page.id else pages.first.id end end |
#position(page = nil) ⇒ Object
61 62 63 64 65 66 67 |
# File 'app/models/fe/element.rb', line 61 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)
93 94 95 |
# File 'app/models/fe/element.rb', line 93 def ptemplate self.class.to_s.underscore end |
#question? ⇒ Boolean
87 88 89 |
# File 'app/models/fe/element.rb', line 87 def question? self.kind_of?(Question) end |
#required?(answer_sheet = nil) ⇒ Boolean
57 58 59 |
# File 'app/models/fe/element.rb', line 57 def required?(answer_sheet = nil) required == true end |
#reuseable? ⇒ Boolean
126 127 128 |
# File 'app/models/fe/element.rb', line 126 def reuseable? (self.is_a?(Question) || self.is_a?(Fe::QuestionGrid) || self.is_a?(Fe::QuestionGridWithTotal)) end |
#set_position(position, page = nil) ⇒ Object
69 70 71 72 73 74 75 76 77 |
# File 'app/models/fe/element.rb', line 69 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 |