web-dev-qa-db-ja.com

なぜRails db:migrateが機能しないのですか?

Rails db:migrateと入力すると、次のエラーが表示されました。グーグルで検索して、移行バージョンを[4.2]から[5.1]に変更するようなことを誰かが言ったが、まだ機能していない。

Rails db:migrate Rails aborted!StandardError:エラーが発生しました。これ以降のすべての移行はキャンセルされました:

ActiveRecord :: Migrationから直接継承することはサポートされていません。 Rails移行が書かれたリリースを指定してください:

クラスCreateCkeditorAssets <ActiveRecord :: Migration [4.2]

24
jose tanaka

Rails 5は、移行の作成方法を変更しました。 Rails release starting Rails 5このように指定する必要があります(Rails 5.1)を使用している場合) :

class CreateCkeditorAssets < ActiveRecord::Migration[5.1]

または、テスト移行を作成して、Railsのバージョンが移行を生成し、そこから取得する方法を確認できます。

Rails g model Test name:string
36
Aditya

Aditya はすでに答えを書いています。すべての移行を手動で変更するのは多忙な作業なので、それを行うための1つのライナースクリプトを書きました。

Linux(Gnu sed)の場合

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

Macの場合(BSD sed)

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

注:4.2でRailsから5.1にアップグレードする元

42
Tachyons