Chris@16: class ConsolidateRepositoryOptions < ActiveRecord::Migration Chris@16: class Repository < ActiveRecord::Base Chris@16: def self.inheritance_column Chris@16: # disable single table inheritance Chris@16: nil Chris@16: end Chris@16: Chris@16: serialize :checkout_settings, Hash Chris@16: end Chris@16: Chris@16: def self.up Chris@16: add_column :repositories, :checkout_settings, :text Chris@16: Chris@16: Repository.all.each do |r| Chris@16: r.checkout_settings = { Chris@16: "checkout_url_type" => r.checkout_url_type, Chris@16: "checkout_url" => r.checkout_url, Chris@16: "display_login" => r.display_login, Chris@16: "render_type" => r.render_type, Chris@16: "checkout_url_overwrite" => r.checkout_url_overwrite Chris@16: } Chris@16: r.save! Chris@16: end Chris@16: remove_column :repositories, :checkout_url_type Chris@16: remove_column :repositories, :checkout_url Chris@16: remove_column :repositories, :display_login Chris@16: remove_column :repositories, :render_type Chris@16: remove_column :repositories, :checkout_url_overwrite Chris@16: end Chris@16: Chris@16: def self.down Chris@16: add_column :repositories, :checkout_url_type, :string, :default => nil, :null => true Chris@16: add_column :repositories, :checkout_url, :string, :default => nil, :null => true Chris@16: add_column :repositories, :display_login, :string, :default => nil, :null => true Chris@16: add_column :repositories, :render_type, :string, :default => 'url', :null => false Chris@16: add_column :repositories, :checkout_url_overwrite, :boolean, :default => false, :null => false Chris@16: Chris@16: Repository.all.each do |r| Chris@16: r.checkout_url_type = r.checkout_settings["checkout_url_type"] Chris@16: r.checkout_url = r.checkout_settings["checkout_url"] Chris@16: r.display_login = r.checkout_settings["display_login"] Chris@16: r.render_link = r.checkout_settings["render_link"] Chris@16: r.checkout_url_overwrite = r.checkout_settings["checkout_url_overwrite"] Chris@16: r.save! Chris@16: end Chris@16: Chris@16: remove_column :repositories, :checkout_settings Chris@16: end Chris@16: end