Sha256: 21a527ab99a28a4c6d2d6299da09505d6930503f6c2abc0ace48dbea51aa7e11

Contents?: true

Size: 1.3 KB

Versions: 5

Compression:

Stored size: 1.3 KB

Contents

class ChangeFamilyInOs < ActiveRecord::Migration

  class Operatingsystem < ActiveRecord::Base; end

  def self.up
    add_column :operatingsystems, :type, :string, :limit => 16
    add_index :operatingsystems, :type

    Operatingsystem.reset_column_information

    families = ["Debian", "Redhat", "Solaris", "Suse", "Windows"]

    ok = true
    Operatingsystem.all.each do |os|
      if os.family_id
        say "Converting #{os.family_id} into #{families[os.family_id]}"
        os.update_attribute :type, families[os.family_id]
        ok &&= os.valid?
      end
    end
    if ok
      remove_column :operatingsystems, :family_id
    else
      say "Failed to migrate all os.family_ids to os.family"
    end
  end

  def self.down
    add_column :operatingsystems, :family_id, :integer

    Operatingsystem.reset_column_information

    families = Operatingsystem.families

    ok = true
    for os in Operatingsystem.all
      if os.family
        say "Converting #{os.family} into #{families.index(os.family.to_s)}"
        os.update_attribute :family_id,     families.index(os.family.to_s)
        ok &&= os.valid?
      end
    end
    if ok
      remove_index :operatingsystems, :type
      remove_column :operatingsystems, :type
    else
      say "Failed to migrate all os.families to os.family_ids"
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
foreman_discovery-1.0.0 test/foreman_app/db/migrate/20100616114400_change_family_in_os.rb
foreman_discovery-1.0.0.rc4 test/foreman_app/db/migrate/20100616114400_change_family_in_os.rb
foreman_discovery-1.0.0.rc3 test/foreman_app/db/migrate/20100616114400_change_family_in_os.rb
foreman_discovery-1.0.0.rc2 test/foreman_app/db/migrate/20100616114400_change_family_in_os.rb
foreman_discovery-1.0.0.rc1 test/foreman_app/db/migrate/20100616114400_change_family_in_os.rb