2016-12-29 43 views
0

我創建了一個新遷移,以便爲已經擁有Paperclip附件的當前模型添加新的Paperclip附件。由於錯誤的數據類型導致無法回滾遷移

雖然犯了一個錯誤,並定義的數據類型作爲attachment而不是add_attachment

class AddDetailsToProfilepics < ActiveRecord::Migration[5.0] 
    def change 
    add_column :profilepics, :finalimage, :attachment 
    end 
end 

這時我才發現沒有多餘的專欄由回形針(* _file_name * _content_type)創建,並意識到我犯了一個錯誤。

雖然現在沒有回滾是可能的,因爲它會觸發一個錯誤。我創建了一個新的遷移(刪除與錯誤的數據類型此列),並得到了類似的錯誤:

undefined method 'to_sym' for nil:NilClass 

當shema.rb數據類型看,不進入:

 ... 
     t.integer "y" 
     t.integer "width" 
     t.integer "height" 
     t.   "finalimage" 
     t.index ["professionnel_id"], name: "index_profilepics_on_professionnel_id" 

我試着將其更改爲字符串並重新運行新的「remove_column」遷移但出現相同的錯誤。

+0

當您說您嘗試更改它時,是否在模式文件中更改它,然後嘗試,或者您是否創建了一個遷移來更改該列的數據類型,如=> http:/ /stackoverflow.com/questions/2799774/rails-migration-for-change-column? –

+0

所以你說沒有創建額外的列意味着數據庫沒有通過此遷移添加額外的列? – Deep

+0

我嘗試直接在shema文件中添加一個隨機數據類型。我應該嘗試將其遷移到另一種數據類型嗎?涉及此字段的遷移似乎不起作用。 – Maxence

回答

0

好吧,我找到解決方案。殺掉development.sqlite3schema.rb。刪除對上次遷移中錯誤列的引用。做一個rails db:migrate 一切都會被重建。 儘管數據庫爲空

相關問題