2017-06-07 37 views
7

Napisałem w rails db:migrate i otrzymano następujący błąd. Przeszukałem go i ktoś powiedział coś w rodzaju zmiany wersji migracji z [4.2] na [5.1], ale nadal nie zadziałało.Dlaczego moje porty DB: migracja nie działa?

rails db:migrate rails aborted! StandardError: An error has occurred, this and all later migrations canceled:

Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for:

class CreateCkeditorAssets < ActiveRecord::Migration[4.2]

+3

można wkleić pełną ślad? –

+1

Pokaż swoją migrację. Także jaka jest twoja wersja rails –

Odpowiedz

12

Szyny 5 zmieniły sposób tworzenia migracji. Musisz określić uwolnienie Rails począwszy Rails 5 tak (zakładając że używasz Rails 5.1):

class CreateCkeditorAssets < ActiveRecord::Migration[5.1] 

Można też spróbować stworzyć migrację testową i zobacz jak twoja wersja Rails generuje migracji a następnie go stamtąd:

rails g model Test name:string 
+0

Dzięki! Nie udało mi się naprawić tego problemu, dopóki nie dowiedziałem się, że przeglądam pliki w folderze ckeditor zamiast w pliku migracji !! –

7

Aditya już napisałem odpowiedź, Zmiana wszystkie migracje ręcznie jest gorączkowy zadanie, więc napisałem skrypt jeden liner to zrobić

w systemie Linux (GNU sed)

grep -rl "ActiveRecord::Migration$" db | xargs sed -i 's/ActiveRecord::Migration/ActiveRecord::Migration[4.2]/g' 

W Mac (BSD sed)

grep -rl "ActiveRecord::Migration$" db | xargs sed -i "" "s/ActiveRecord::Migration/ActiveRecord::Migration[4.2]/g" 

Uwaga, można zastąpić 4.2 z szynami, z którego Yiu aktualizacji do 5.1