Ho provato ad aggiungere una colonna a una tabella dopo una colonna specifica nella tabella. Ecco quello che ho fatto:ruby on rails aggiunge una colonna dopo il nome di una colonna specifica
rails generate migration add_reaction_id_to_patient_allergies reaction_id: integer :after => 'patient_id'
Ecco ciò che il mio file di migrazione appare come:
class AddReactionIdToPatientAllergies < ActiveRecord::Migration
def change
add_column :patient_allergies, :reaction_id, :string
add_column :patient_allergies, :integer, :string
add_column :patient_allergies, :, :after
add_column :patient_allergies, :=, :string
end
end
non penso il comando è andato bene. Vedo un '=' nel file sopra. Non penso che dovrebbe essere lì. Qualcuno può dirmi se ho perso qualcosa?
Se sì, come annullare quanto sopra?
@michael Solo per aggiungere un'altra cosa a questa ottima risposta, per annullare una migrazione riuscita ma indesiderata, è possibile eseguire rake db: rollback - questo annulla la migrazione più recente. Puoi tornare indietro ripetendolo. Mi trovo spesso in annullamento per apportare piccole modifiche, come l'impostazione del valore predefinito o l'ordine delle colonne – Polsonby
L'opzione ': after' non sembra essere inclusa nella [documentazione dell'API] (http://api.rubyonrails.org/classes /ActiveRecord/Migration.html), almeno per Rails 4.2.3. Scoperto dopo aver provato: la migrazione è andata bene ma l'ordine non è stato applicato. – nandinga
@nandinga Sembra che la classe [ColumnDefinition] (https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L13) nell'ultima versione di Rails supporti ancora l'opzione 'dopo', anche se non l'ho ancora testata nelle ultime versioni di Rails. – piersadrian