che io sappia non c’è modo diretto perché la logica delle migration
è proprio quella di modifiche progressive utili in un ambiente giÃ
rilasciato.
Per quanto ne so io, devi modificare le tabelle che hai già creato
all’interno della nuova migrazione. in modo tale da mantenere la
progressione
per esempio questa migrazione fa delle modifiche su una tabella giÃ
esistente (gestita se non ricordo male con attachemnt_fu ma non credo
che importi) e dà un valore a un campo eseguendo del codice RoR
class Asset < ActiveRecord::Base; end
class MakeAssetsAttachable < ActiveRecord::Migration
def self.up
add_column :assets, :attachable_id, :integer
add_column :assets, :attachable_type, :string, :limit => 12
add_column :assets, :created_at, :datetime
Asset.find(:all).each do |asset|
asset.attachable_id = asset.id
asset.attachable_type = ‘mytype’
asset.save
end
remove_column :assets, :content_id
add_index :assets, [:attachable_id, :attachable_type]
end
def self.down
remove_index :assets, [:attachable_id, :attachable_type]
add_column :assets, :content_id, :integer
Asset.find(:all).each do |asset|
asset.auction_id = asset.id
asset.save
end
remove_column :assets, :attachable_id
remove_column :assets, :attachable_type
remove_column :assets, :created_at
end
end
Naturalmente se per te non è un problema puoi cambiare la numerazione
delle migration ma devi ripartire dalla migration 0 oppure puoi
farle per il futuro divise per 10 o 100 10_m1 20_m2 eccetera e
metterci in mezzo quello che vuoi( questa cosa mi è venuta in mente
solo adesso)
mi spiace anche dover confessare che io le foreign key le ho sempre
aggiunte in questo modo
execute ‘ALTER TABLE TableA
ADD CONSTRAINT fk_tableA_TableB
FOREIGN KEY (myfk
) REFERENCES tableb
(tablebfield
) ON DELETE
CASCADE ON UPDATE CASCADE;’
Il giorno 19/nov/08, alle ore 18:48, Davide S. ha scritto: