2009-10-02 13 views

risposta

2

Qual è il problema?

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

stai dicendo remove_column: indirizzi,: indirizzabile non è corretto? – Damian

+0

sì .. questa è la soluzione giusta – amitkaz

+0

Damian: no, basta guardare la tabella tramite un browser SQL e vedrai le due colonne. –

-2

Cosa c'è di sbagliato in questo?

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

questo è quello che ho pensato che sarebbe stato, ma questa è la prima volta ho usato modelli polimorfici, ma ho confuso – Damian

+0

in realtà non dovrebbe essere remove_column: indirizzi,: indirizzabile – Damian

+0

Ops, si hai completamente ragione. Avrei dovuto prima controllare i documenti, invece di andare a memoria. –

12

realtà,

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

sarebbe un po 'railsier, no?

modificare: Come Eben Geer sottolinea

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

è il modo corretto per farlo. Saluti!

+1

ciò causerà la colonna addressable_type da lasciare. dovrebbe essere t.remove_references: indirizzabile,: polymorphic => true –

+0

Avrei passato questa risposta se includesse @EbenGeer il suo commento – 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

Ti preghiamo di dedicare un minuto a spiegare cosa fa il tuo codice e come risponde a questa domanda. – Bond

Problemi correlati