Sha256: c1781a960d763485b09b8fc7eb09014820b20fca0b38a7f3b3d459b8313fd180

Contents?: true

Size: 1.95 KB

Versions: 31

Compression:

Stored size: 1.95 KB

Contents

require 'spree/core/preference_rescue'

class NewPreferences < ActiveRecord::Migration

  def up
    add_column :spree_preferences, :key, :string
    add_column :spree_preferences, :value_type, :string
    add_index :spree_preferences, :key, :unique => true

    remove_index :spree_preferences, :name => 'ix_prefs_on_owner_attr_pref'

    # remove old constraints for migration
    change_column :spree_preferences, :name, :string, :null => true
    change_column :spree_preferences, :owner_id, :integer, :null => true
    change_column :spree_preferences, :owner_type, :string, :null => true
    change_column :spree_preferences, :group_id, :integer, :null => true
    change_column :spree_preferences, :group_type, :string, :null => true

    cfgs = execute("select id, type from spree_configurations").to_a
    execute("select id, owner_id, name from spree_preferences where owner_type = 'Spree::Configuration'").each do |pref|
      configuration = cfgs.detect { |c| c[0].to_s == pref[1].to_s }

      value_type = configuration[1].constantize.new.send "preferred_#{pref[2]}_type" rescue 'string'

      execute "UPDATE spree_preferences set `key` = '#{configuration[1].underscore}/#{pref[2]}', `value_type` = '#{value_type}' where id = #{pref[0]}" rescue nil
    end

    # remove orphaned calculator preferences
    Spree::Preference.where(:owner_type => 'Spree::Calculator').each do |preference|
      preference.destroy unless Spree::Calculator.exists? preference.owner_id
    end

    Spree::PreferenceRescue.try

    Spree::Preference.where(:value_type => nil).update_all(:value_type => 'string')
  end

  def down
    remove_column :spree_preferences, :key
    remove_column :spree_preferences, :value_type

    add_column :spree_preferences, :name, :string
    add_column :spree_preferences, :owner_id, :integer
    add_column :spree_preferences, :owner_type, :string
    add_column :spree_preferences, :group_id, :integer
    add_column :spree_preferences, :group_type, :string
  end
end

Version data entries

31 entries across 31 versions & 3 rubygems

Version Path
spree_core-1.2.5 db/migrate/20120119024710_new_preferences.rb
spree_core-1.1.6 db/migrate/20120119024710_new_preferences.rb
spree_core-1.1.5 db/migrate/20120119024710_new_preferences.rb
spree_core-1.2.4 db/migrate/20120119024710_new_preferences.rb
spree_core-1.0.7 db/migrate/20120119024710_new_preferences.rb
spree_core-1.2.3 db/migrate/20120119024710_new_preferences.rb
spree_core-1.2.2 db/migrate/20120119024710_new_preferences.rb
spree_core-1.1.4 db/migrate/20120119024710_new_preferences.rb
spree_core-1.2.0 db/migrate/20120119024710_new_preferences.rb
spree_core-1.2.0.rc2 db/migrate/20120119024710_new_preferences.rb
spree_core-1.2.0.rc1 db/migrate/20120119024710_new_preferences.rb
spree_core-1.1.3 db/migrate/20120119024710_new_preferences.rb
spree_core-1.0.6 db/migrate/20120119024710_new_preferences.rb
spree_pag_seguro-1.0.7 spec/dummy/db/migrate/20120301154143_new_preferences.rb
spree_core-1.1.2 db/migrate/20120119024710_new_preferences.rb
spree_core-1.1.2.rc1 db/migrate/20120119024710_new_preferences.rb
spree_pag_seguro-1.0.6 spec/dummy/db/migrate/20120301154143_new_preferences.rb
spree_pag_seguro-1.0.5 spec/dummy/db/migrate/20120301154143_new_preferences.rb
spree_pag_seguro-1.0.4 spec/dummy/db/migrate/20120301154143_new_preferences.rb
spree_core-1.1.1 db/migrate/20120119024710_new_preferences.rb