Próbowałem dodać kolumnę do tabeli po określonej kolumnie w tabeli. Oto co zrobiłem:ruby na szynach dodaj kolumnę po konkretnej nazwie kolumny
rails generate migration add_reaction_id_to_patient_allergies reaction_id: integer :after => 'patient_id'
Oto co mój plik migracji wygląda następująco:
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
nie sądzę polecenie poszło dobrze. Widzę "=" w powyższym pliku. Nie sądzę, że powinno tam być. Czy ktoś może mi powiedzieć, czy coś przeoczyłem?
Jeśli tak, w jaki sposób mogę cofnąć powyższe?
@ Michael Po prostu dodać jeszcze jedną rzecz do tej wspaniałej odpowiedzi, aby cofnąć udaną, ale niechcianą migrację, możesz zrobić polecenie rake db: rollback - odwraca to ostatnią migrację. Możesz przejść dalej, powtarzając go. Często się cofam, aby wprowadzić drobne poprawki, takie jak ustawienie domyślnej wartości lub kolejność kolumn. – Polsonby
Opcja ': after' nie powinna być zawarta w [dokumentacji API] (http://api.rubyonrails.org/classes) /ActiveRecord/Migration.html), przynajmniej dla Rails 4.2.3. Znaleziono po próbie: migracja poszła dobrze, ale zamówienie nie zostało zastosowane. – nandinga
@nandinga Wygląda na to, że klasa [ColumnDefinition] (https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L13) w najnowszych Railsach wciąż obsługuje opcja 'after', chociaż nie testowałem tego w ostatnich kilku wydaniach Rails. – piersadrian