2017-06-07 1 views
7

J'ai tapé rails db:migrate et a reçu l'erreur suivante. Je ai googlé et quelqu'un a dit quelque chose comme changer la version de migration de [4.2] à [5.1] mais cela n'a toujours pas fonctionné.Pourquoi mes rails db: migrent ne fonctionnent pas?

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

pouvez-vous coller complet backtrace? –

+1

Montrez votre migration. Aussi quelle est la version de vos rails –

Répondre

12

Les barres 5 ont modifié la façon dont les migrations sont créées. Vous devez spécifier les rails à partir libération Rails 5 comme ceci (en supposant que vous utilisez Rails 5.1):

class CreateCkeditorAssets < ActiveRecord::Migration[5.1] 

Alternativement, vous pouvez essayer de créer une migration de test et de voir comment votre version de Rails génère une migration puis à partir de là:

rails g model Test name:string 
+0

Merci! Je n'ai pas pu résoudre ce problème jusqu'à ce que je découvre que je regardais les fichiers dans le dossier ckeditor au lieu du fichier de migration !! –

7

Aditya déjà écrit la réponse, changer toutes les migrations à la main est une tâche trépidante, donc je peux écrire un script d'une doublure pour faire

Dans linux (Gnu ETD)

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

Sous Mac (BSD sed)

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

Remarque, vous pouvez remplacer 4.2 avec les rails dont Yiu mise à niveau vers 5.1