Sha256: 6275c7c1efbb95d06138e3a2304f4d424de6ad5ca499d6cb4d20a624f9ec376a

Contents?: true

Size: 1.29 KB

Versions: 7

Compression:

Stored size: 1.29 KB

Contents

# Legacy table support
class Checkout < ActiveRecord::Base; end;

class PolymorphicPayments < ActiveRecord::Migration
  def up
    remove_column :payments, :type
    remove_column :payments, :creditcard_id
    rename_column :payments, :order_id, :payable_id
    change_table :payments do |t|
      t.string :payable_type, :payment_method
      t.references :source, :polymorphic => true
    end
    execute "UPDATE payments SET payable_type = 'Order'"

    Spree::CreditCard.table_name = 'creditcards'

    Spree::CreditCard.all.each do |credit_card|
      if checkout = Checkout.find_by_id(credit_card.checkout_id) && checkout.order
        if payment = checkout.order.payments.first
          execute "UPDATE payments SET source_type = 'CreditCard', source_id = #{credit_card.id} WHERE id = #{payment.id}"
        end
      end
    end

    Spree::CreditCard.table_name = 'spree_creditcards'

    remove_column :creditcards, :checkout_id
  end

  def down
    add_column :creditcards, :checkout_id, :integer
    change_table :payments do |t|
      t.remove :payable_type
      t.remove :payment_method
      t.remove :source_id
      t.remove :source_type
    end
    rename_column :payments, :payable_id, :order_id
    add_column :payments, :creditcard_id, :integer
    add_column :payments, :type, :string
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
spree_core-1.2.5 db/migrate/20100209144531_polymorphic_payments.rb
spree_core-1.2.4 db/migrate/20100209144531_polymorphic_payments.rb
spree_core-1.2.3 db/migrate/20100209144531_polymorphic_payments.rb
spree_core-1.2.2 db/migrate/20100209144531_polymorphic_payments.rb
spree_core-1.2.0 db/migrate/20100209144531_polymorphic_payments.rb
spree_core-1.2.0.rc2 db/migrate/20100209144531_polymorphic_payments.rb
spree_core-1.2.0.rc1 db/migrate/20100209144531_polymorphic_payments.rb