我有遷移(創建歸途),我需要改變,它的下面:修改特定遷移
20130923000732_create_questions.rb
我需要改變
t.string to --> t.text
我怎麼能做到這一點?
我讀過,我可以創建一個新的遷移重命名列,但我不太明白。
我有遷移(創建歸途),我需要改變,它的下面:修改特定遷移
20130923000732_create_questions.rb
我需要改變
t.string to --> t.text
我怎麼能做到這一點?
我讀過,我可以創建一個新的遷移重命名列,但我不太明白。
你的應用程序還在開發中,j在edtor中打開該遷移,將其更改爲文本並再次運行所有遷移。 或者編寫一個將更新該字段類型的遷移。
首先在你端子:
rails g migration change_column_type_in_questions
然後在遷移文件:
class ChangeColumnTypeInQuestions < ActiveRecord::Migration
def change
change_column :questions, :body, :text
end
end
遷移將查找表的問題,並會不丟失數據更新列身型。
如果20130923000732_create_questions.rb遷移是你最後的遷移,你可以回滾有:
rake db:rollback
否則,你可以簡單地降低您的使用特定版本的遷移:
rake db:migrate:down VERSION=20130923000732
回滾遷移後,更改遷移文件並再次遷移。
這是一種向後遷移的方式。我嘗試了rake db:migrate:down方式,但後來所有的遷移都被取消了。你能解釋一下這一步嗎? –
嗯你的情況是不同的。創建新的遷移將解決您的問題。 – xaph
運行rails generate migration change_string_to_text_in_questions
然後一個新的遷移文件將被創建,與
def change
end
方法,現在將其插入,change_column :table_name, :column_name, :type
現在遷移的文件應該是這樣的,
def change
change_column :table_name, :column_name,:type
end
在此之後,保存變化和運行db:migrate
我的意思是遷移問題的移植的名稱將知道軌道?因爲有很多。 –
您必須指定要在遷移文件中更改的表名稱和列名稱,一旦您遷移更改,它將自動更改。 – ajkumar25
它似乎與重命名遷移文件一起工作。在最初的create_question遷移中仍然存在t.string,對嗎? –
不,但如果我沒有重要的數據在數據庫中,我只需更改該遷移中的列類型,並將重置數據庫並從零開始構建。當您有需要保留的數據時,使用遷移重命名字段非常有用。 – rmagnum2002
它與遷移工作正常:) –