[英]rails migration doesn't work with an empty down function
我生成了一個空的 function 的 Rails 3.2 遷移,因為遷移是不可逆的(我不想拋出異常)。 我成功運行了遷移,但沒有任何效果。 當我回滾並再次運行 db:migrate 時,效果確實適用。
我通過用什么都不做的代碼填充空的 function 輕松解決了這個問題,但它仍然很丑陋。
有誰知道為什么會這樣? 這是軌道錯誤嗎?
拋出異常是為了防止破壞你的數據庫,如果它是不可逆的,那么這可能是正確的做法。 你的#down
看起來像這樣:
def down
raise ActiveRecord::IrreversibleMigration, "Explain why its irreversable!"
end
這將使其他人省去很多麻煩,因為它清楚地通知了不可逆轉的遷移並解釋了其背后的原因:)
編輯:我無法確認 Rails 3.2.3 的這種行為。 我在沒有#down
的情況下創建了幾個不同的遷移,並且沒有引發 exceptino 。 也許這是您的代碼中的某些內容,您沒有顯示一點。
編輯 2:回顧一下,當您使用向上/向下方法時,您有責任提高ActiveRecord::IrreversibleMigration
。 在其他情況下,什么也不會發生(在 AR 中定義的#down
將只返回 nil)。 使用#change
時行為不同。 在某些情況下,可以通過此處定義的#inverse
引發上述異常: https://github.com/rails/rails/blob/565bfb9cd49285ebaa170141b4996c22ba81de43/activerecord/lib/active_record/migration/command_recorder.rb#L39這是預期的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.