2009-10-02 6 views

Odpowiedz

2

Na czym polega problem?

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

mówisz: remove_column: addresses,: addressable is not correct? – Damian

+0

tak ... to jest właściwe rozwiązanie – amitkaz

+0

Damian: nie, po prostu spójrz na tabelę za pomocą przeglądarki SQL, a zobaczysz dwie kolumny. –

-2

Co jest nie tak z tym down?

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

To jest to co myślałem, że będzie, ale to jest pierwszy raz użyłem modele polimorficzne i irytować – Damian

+0

rzeczywiście nie powinno być remove_column: adresy: adresowalnych – Damian

+0

Ups, "całkowicie się zgadzam. Powinienem najpierw sprawdzić dokumenty, zamiast przechodzić przez pamięć. –

12

właściwie

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

byłoby nieco railsier, nie?

edit: Jak Eben Geer zaznacza

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

jest poprawny sposób to zrobić. Twoje zdrowie!

+1

spowoduje to, że kolumna addressable_type pozostanie w tyle. powinno to być t.remove_references: addressable,: polymorphic => true –

+0

Chciałbym przegłosować tę odpowiedź, jeśli zawiera on @EbenGeer jego komentarz – 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

Proszę poświęć chwilę, aby wyjaśnić, co robi twój kod i jak odpowiada na to pytanie. – Bond