Class: Cardboard::PagePart

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
RankedModel
Defined in:
app/models/cardboard/page_part.rb

Instance Method Summary collapse

Instance Method Details

#attr(field) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
# File 'app/models/cardboard/page_part.rb', line 54

def attr(field)
  field = field.to_s
  @attr ||= {}
  @attr[field] ||= begin
    f = self.fields.where(identifier: field).first
    return nil unless f
    out = f.value_uid.nil? ? nil : f.value
    out = f.default if f.required? && out.nil?
    out
  end
end

#new_subpartObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'app/models/cardboard/page_part.rb', line 38

def new_subpart
  return nil if !repeatable? || subpart?
  master = self.subparts.first
  master_hash = master.attributes.select do |key, value|
    ["parent_part_id"].include? key
  end
  subpart = Cardboard::PagePart.new(master_hash)
  for field in master.fields
    field_hash = field.attributes.select do |key, value|
      ["identifier", "label", "type", "required", "hint", "placeholder"].include? key
    end 
    subpart.fields << Cardboard::Field.new(field_hash)
  end
  return subpart
end

#repeatable?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'app/models/cardboard/page_part.rb', line 34

def repeatable?
   @parent_repeatable ||= self.parent ? self.parent[:repeatable] : super
end

#subpart?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'app/models/cardboard/page_part.rb', line 30

def subpart?
  !self.parent_part_id.nil?
end