Sha256: fa3685ddccd8a7e4caa48f545b2e5f6f736128af10c75d40fd314d12593728f4

Contents?: true

Size: 857 Bytes

Versions: 107

Compression:

Stored size: 857 Bytes

Contents

class AddIndexToShippingMethodZones < ActiveRecord::Migration[5.0]
  def change
    duplicates = Spree::ShippingMethodZone.group(:shipping_method_id, :zone_id).having('sum(1) > 1').size

    duplicates.each do |f|
      shipping_method_id, zone_id = f.first
      count = f.last - 1 # we want to leave one record
      zones = Spree::ShippingMethodZone.where(shipping_method_id: shipping_method_id, zone_id: zone_id).last(count)
      zones.map(&:destroy)
    end

    if index_exists? :spree_shipping_method_zones, [:shipping_method_id, :zone_id]
      remove_index :spree_shipping_method_zones, [:shipping_method_id, :zone_id]
      add_index :spree_shipping_method_zones, [:shipping_method_id, :zone_id], unique: true
    end

    add_index :spree_shipping_method_zones, :zone_id
    add_index :spree_shipping_method_zones, :shipping_method_id
  end
end

Version data entries

107 entries across 107 versions & 1 rubygems

Version Path
spree_core-4.0.9 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.1.15 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.2.7 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.3.3 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.2.6 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.3.2 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.3.1 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.3.0 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.3.0.rc3 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.3.0.rc2 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.3.0.rc1 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.2.5 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.1.14 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.0.8 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.2.4 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-3.7.14.1 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.2.3.1 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.1.13.1 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.0.7.1 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb
spree_core-4.2.3 db/migrate/20170331123832_add_index_to_shipping_method_zones.rb