2009-10-02 28 views
6

eklemek için aşağı göç nedir ben folowing göç var ama bu nesi var down yöntemlebir polimorfik referansı

change_table :addresses do |t| 
    t.references :addressable, :polymorphic => true 
end 

cevap

2

Sorun nedir? aslında

def self.down 
    remove_column :addresses, :addressable_type 
    remove_column :addresses, :addressable_id 
end 
+0

diyorsunuz remove_column: adresler: adreslenebilir değil mi? – Damian

+0

evet .. bu doğru çözümdür – amitkaz

+0

Damian: Hayır, sadece bir SQL tarayıcısı üzerinden tabloya bakın ve iki sütunu göreceksiniz. –

-2

kullanmak bilmiyorum?

def self.down 
    remove_column :addresses, :addressable 
end 
+0

bunun olacağını düşündüm şey bu ama bu ı polimorfik modellerini kullanmış ve aslında o remove_column olmamalı – Damian

+0

karıştı ilk kez:, adresleri: adreslenebilir – Damian

+0

Hata! Tamamen haklısın. İlk önce belgeleri kontrol etmeliydim, hafızaya gitmek yerine. –

12

,

change_table :addresses do |t| 
    t.remove_references :addressable 
    end 

hayır, biraz railsier olurdu?

düzenlemek: Eben Geer işaret ettiği gibi

change_table :addresses do |t| 
    t.remove_references :addressable, :polymorphic => true 
    end 

Bunu yapmak için doğru bir yoldur. Şerefe!

+1

bu, addressable_type sütununun geride kalmasına neden olur. t.remove_references olmalıdır: adreslenebilir,: polimorfik => true –

+0

Eğer @EbenGeer onun yorumu içeriyorsa bu cevabı üstlenirdim – Arjan

6
def self.down 
    change_table :addresses do |t| 
    t.remove_references :addressable, :polymorphic => true 
    end 
end 
2
class RemoveAddressableFromAddresses < ActiveRecord::Migration 
    def change 
    remove_reference :addresses, :addressable, polymorphic: true, index: true 
    end 
end 
+0

Lütfen kodunuzun ne yaptığını ve bu soruyu nasıl yanıtladığını açıklamak için bir dakikanızı ayırın. – Bond