Sha256: 62cc98276f692b92804aaab5636e60e72eef6d3b29c4b4b7ffb57fc34507f870

Contents?: true

Size: 1.35 KB

Versions: 4

Compression:

Stored size: 1.35 KB

Contents

# This migration comes from spree (originally 20100209144531)
# 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 |creditcard|
      if checkout = Checkout.find_by_id(creditcard.checkout_id) and checkout.order
        if payment = checkout.order.payments.first
          execute "UPDATE payments SET source_type = 'Creditcard', source_id = #{creditcard.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

4 entries across 4 versions & 1 rubygems

Version Path
datashift_spree-0.3.0 spec/sandbox/db/migrate/20121023154387_polymorphic_payments.spree.rb
datashift_spree-0.2.1 spec/sandbox/db/migrate/20121015151180_polymorphic_payments.spree.rb
datashift_spree-0.2.0 spec/sandbox/db/migrate/20120925192748_polymorphic_payments.spree.rb
datashift_spree-0.1.0 spec/sandbox/db/migrate/20120918081479_polymorphic_payments.spree.rb