我有一個奇怪的問題。這是我的移民代碼:Rails遷移不起作用
class SetDefaultToFalse < ActiveRecord::Migration
def change
MyObject.where('done is ?', nil).each do |a|
a.done = false
a.save
end
end
end
如果我的數據庫轉儲運行此從前段時間,與所有其他,舊的遷移,它的完成後,任何my_objects
不具備done
場標記爲false
。如果我再次使用rake db:rollback
和db:migrate
,突然它可以工作。爲什麼?在此之前,列done
增加了5次以上的遷移。更改以前的遷移不是我正在尋找的解決方案。
你應該看看這個:HTTP://計算器.com/questions/12612969/setting-different-default-values-in-rails-migrations – TarunJadhwani
@TarunJadhwani,你可以發表你的評論作爲答案。解決方案是這兩行: MyObject.connection.schema_cache.clear! MyObject.reset_column_information –