2009-10-02 3 views

Répondre

2

Quel est le problème?

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

dites-vous remove_column: adresses,: addressable n'est pas correct? – Damian

+0

ouais .. c'est la bonne solution – amitkaz

+0

Damian: non, il suffit de regarder la table via un navigateur SQL et vous verrez les deux colonnes. Cela entraînera la colonne addressable_type à être laissée derrière –

-2

Quel est le problème avec ça?

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

Thats ce que je pensais que ce serait, mais cela est la première fois que je l'ai utilisé des modèles polymorphes et suis confus – Damian

+0

en fait il ne devrait pas il remove_column: adresses,: – Damian

+0

adressable Oups, vous Sommes totalement juste. J'aurais dû vérifier les docs d'abord, au lieu d'aller de mémoire. –

12

fait,

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

serait un peu railsier, non?

modifier: Comme le souligne Eben Geer sur

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

est la bonne façon de le faire. À votre santé!

+1

. il devrait être t.remove_references: addressable,: polymorphic => true –

+0

Je remettrais cette réponse à plus tard si elle incluait @EbenGeer son commentaire – 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

S'il vous plaît prenez une minute pour expliquer ce que fait votre code et comment il répond à cette question. – Bond

Questions connexes