/
20100209144531_polymorphic_payments.rb
42 lines (36 loc) 路 1.29 KB
/
20100209144531_polymorphic_payments.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 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