簡體   English   中英

rails 遷移不適用於空的 function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM