Sha256: bde0248ac31a58069395b2ce1cc51d5ffcfddb4c076dca9bab8f9316e0a00192

Contents?: true

Size: 1.04 KB

Versions: 35

Compression:

Stored size: 1.04 KB

Contents

class IntegerColumnsToBoolean < ActiveRecord::Migration

  class User < ActiveRecord::Base; end

  def self.up
    change_column "users", "admin",     :boolean, :default => false, :null => false
    change_column "users", "developer", :boolean, :default => false, :null => false
  end

  def self.down
    change_column "users", "admin",     :integer, :limit => 1, :default => 0, :null => false
    change_column "users", "developer", :integer, :limit => 1, :default => 0, :null => false
  end

  def self.change_column(table, column, type, options={})
    model_class = table.singularize.camelize.constantize

    announce "saving #{model_class} data"
    old_values = model_class.find(:all).map do |model|
      [model.id, model.send("#{column}?")]
    end

    remove_column table, column
    add_column table, column, type, options

    model_class.reset_column_information

    announce "restoring #{model_class} data"
    old_values.each do |(id, value)|
      model = model_class.find(id)
      model.send "#{column}=", value
      model.save
    end
  end

end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
trusty-cms-2.0.1.pre.beta db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-2.0.0.pre.beta db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.2.29 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.2.28 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.28 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.27 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.26 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.25 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.24 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.23 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.22 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.21 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.20 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.19 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.18 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.17 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.16 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.15 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.14 db/migrate/006_integer_columns_to_boolean.rb
trusty-cms-1.1.13 db/migrate/006_integer_columns_to_boolean.rb