2013-12-14 9 views
7

Nel 4 documentazione di Rails (http://guides.rubyonrails.org/migrations.html#creating-a-join-table) vedo che per eliminare una tabella o una tabella unirsi, si possono utilizzare i seguenti metodi in linea di comando:Rails 4: Come eliminare o rimuovere (unire) le tabelle delle tabelle dal database?

drop_table e drop_join_table.

Tuttavia, aggiunge inoltre che si deve "fornire un blocco" - e non so che aspetto abbia nell'esecuzione.

Indipendentemente da qui la mia domanda: come posso rilasciare una tabella o rilasciare una tabella di join?

Inoltre, quando dico drop, voglio dire rimuoverlo dal mio database. So che non è possibile eliminare le migrazioni e che non è consigliabile eseguire il rollback delle migrazioni perché compromette gli sforzi di collaborazione, quindi vorrei evitare di eliminare i file di migrazione e rallentare le migrazioni, se possibile.

Ho fatto un errore durante la creazione di migrazioni per popolare il database. So come modificare le colonne di tabelle (aggiungerne di nuove, rinominarle e cancellarle). Solo non so come eliminare i tavoli.

Grazie per considerare la mia domanda.

Vorrei rimuovere completamente una tabella dal mio database. La mia applicazione è in esecuzione su Rails 4.

risposta

15

Il metodo drop_join_table è definire nel documento drop_join_table

Prende tabella 1, tabella 2 nomi. Esempio: hai 2 tabelle denominate categories e products, e unirsi tabella denominata categories_products)

Quindi creare un file di migrazione con qualsiasi nome che ti piace, allora si scrive codice per eliminare unire le tabelle::

def change 
    drop_join_table :categories, :products 
end 

voi può passare in altre opzioni al metodo drop_join_table, queste opzioni come lo stesso come create_join_table. Guarda questo metodo per vedere più opzioni.

esempio, se il unirsi tavolo non ha convention nome seguito, come categorization, è possibile specificare che:

def change 
    drop_join_table :categories, :products, table_name: categorization 
end 

Per eliminare una tabella, è più semplice con drop_table metodo:

def change 
    drop_table :table_name 
end 

Altre opzioni possono essere passate al metodo drop_table, come le opzioni del metodo create_table

+0

Hey Kien, questo è un grande brea kdown. Grazie. – robertjewell