Module: Cardboard::Seed
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/cardboard/helpers/seed.rb
Class Method Summary collapse
- .populate_fields(fields, object) ⇒ Object
- .populate_pages(filehash = nil) ⇒ Object
- .populate_parts(page_parts, db_page) ⇒ Object
- .populate_settings(filehash = nil) ⇒ Object
Class Method Details
.populate_fields(fields, object) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/cardboard/helpers/seed.rb', line 45 def self.populate_fields(fields, object) fields ||= {} fields.each do |id, field| db_field = Field.where(identifier: id.to_s, object_with_field: object).first_or_initialize db_field.type = "Cardboard::Field::#{(field[:type] || "string").camelize}" db_field.seeding = true db_field.position_position = field[:position] || :last begin db_field.update_attributes!(field.reject{|k,v| ["type", "position"].include?(k)}) rescue Exception => e # Output validation errors puts "-- ERROR --" puts e puts "#{db_field.identifier}: #{db_field.value_uid || field[:value] || field[:default] || "nil"}" puts "-----------" end end #remove fields no longer in the seed file for remove_field in object.fields.map(&:identifier) - fields.map{|k,v|k.to_s} object.fields.where(identifier: remove_field).first.destroy end end |
.populate_pages(filehash = nil) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/cardboard/helpers/seed.rb', line 8 def self.populate_pages(filehash = nil) pages = filehash ? filehash[:pages] : {} pages.each do |id, page| db_page = Cardboard::Page.where(identifier: id.to_s).first_or_initialize db_page.position_position = page[:position] || :last db_page.update_attributes!(page.slice(:title, :parent_id)) self.populate_parts(page[:parts], db_page) end for remove_page in Cardboard::Page.all.map(&:identifier) - pages.map{|k,v|k.to_s} Cardboard::Page.where(identifier: remove_page).first.destroy end Cardboard::Page.create(identifier: "index", path: "/") if Cardboard::Page.root.nil? end |
.populate_parts(page_parts, db_page) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/cardboard/helpers/seed.rb', line 27 def self.populate_parts(page_parts, db_page) page_parts ||= {} page_parts.each do |id, part| db_part = db_page.parts.where(identifier: id.to_s).first_or_initialize db_part.part_position_position = part[:position] || :last db_part.update_attributes!(:repeatable => part[:repeatable]) db_part.subparts.first_or_create! db_part.subparts.each do |db_part| self.populate_fields(part[:fields], db_part) end end for remove_part in db_page.parts.map(&:identifier) - page_parts.map{|k,v|k.to_s} db_page.parts.where(identifier: remove_part).first.destroy end end |
.populate_settings(filehash = nil) ⇒ Object
69 70 71 72 73 74 75 76 77 |
# File 'lib/cardboard/helpers/seed.rb', line 69 def self.populate_settings(filehash = nil) settings = filehash ? filehash[:settings] : nil if settings db_settings = Cardboard::Setting.first_or_create self.populate_fields(settings, db_settings) end Cardboard::Setting.add("company_name", type: "string", default: Cardboard.application.site_title, position: 0) # Cardboard::Setting.add("google_analytics", type: "string", position: 1) end |