2017-06-07 26 views
7

Tôi đã nhập rails db:migrate và nhận được lỗi sau. Tôi googled và ai đó nói điều gì đó như thay đổi phiên bản Migration từ [4.2] sang [5.1] nhưng nó vẫn chưa hoạt động.Tại sao đường ray của tôi là db: di chuyển không hoạt động?

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

bạn có thể dán backtrace hoàn chỉnh? –

+1

Hiển thị di chuyển của bạn. Ngoài ra phiên bản đường ray của bạn là gì –

Trả lời

12

Rails 5 đã thay đổi cách tạo di chuyển. Bạn sẽ phải xác định việc phát hành Rails bắt đầu Rails 5 như thế này (giả sử bạn đang sử dụng Rails 5.1):

class CreateCkeditorAssets < ActiveRecord::Migration[5.1] 

Cách khác, bạn có thể thử tạo di chuyển thử nghiệm và xem cách các phiên bản của Rails tạo ra một sự chuyển đổi và sau đó mang nó từ đó:

rails g model Test name:string 
+0

Cảm ơn! Tôi đã không thể khắc phục vấn đề này cho đến khi tôi phát hiện ra rằng tôi đã nhìn vào các tập tin trong thư mục ckeditor thay vì tập tin di chuyển !! –

7

Aditya đã viết câu trả lời, thay đổi tất cả di cư bằng tay là một công việc bận rộn, Vì vậy, tôi đã viết một kịch bản một lót để làm điều đó

Trong linux (Gnu sed)

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

Trong Mac (BSD sed)

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

Lưu ý, bạn có thể thay 4.2 với đường ray từ đó Yiu được nâng cấp lên 5.1

Các vấn đề liên quan