Sha256: 366d9cf11688328f927c98b2945568aa46d2556b60eed77d788e1aef9974ef93
Contents?: true
Size: 1.35 KB
Versions: 5
Compression:
Stored size: 1.35 KB
Contents
module Alchemy::Upgrader::Tasks class CellsMigration class Cell < ActiveRecord::Base self.table_name = 'alchemy_cells' belongs_to :page, class_name: 'Alchemy::Page' end def migrate_cells if ActiveRecord::Base.connection.data_source_exists?('alchemy_cells') cells = Cell.all @fixed_element_name_finder = FixedElementNameFinder.new if cells.any? cells.each do |cell| migrate_cell!(cell) end else puts "No cells found. Skip" end else puts "Cells table does not exist. Skip" end end private def migrate_cell!(cell) # bust element definitions insta cache Alchemy::Element.instance_variable_set('@definitions', nil) fixed_element = Alchemy::Element.find_or_initialize_by(fixed: true, name: @fixed_element_name_finder.call(cell.name), page: cell.page) elements = Alchemy::Element.where(cell_id: cell.id).order(position: :asc) if fixed_element.new_record? fixed_element.save! Alchemy::Element.acts_as_list_no_update do elements.update_all(parent_element_id: fixed_element.id) end puts "Created new fixed element '#{fixed_element.name}' for cell '#{cell.name}'." else puts "Element for cell '#{cell.name}' already present. Skip" end end end end
Version data entries
5 entries across 5 versions & 1 rubygems