2011-12-13 158 views
2

我在Rails中遇到了一個奇怪的遷移問題。奇怪的遷移錯誤

我有這個用戶表

  • 密碼
  • 電子郵件
  • ...

我想與幾個新列擴展該用戶表一樣

  • 名稱
  • DOB
  • ...

然後我想運行一個像這樣的移民,以填補新列我的第一個2個用戶:

class UpdateUser < ActiveRecord::Migration 
    def up 
    User.find(1).update_attributes!(:name => 'Alexander', :dob => '1984-08-20') 

    User.find(2).update_attributes!(:name => 'Ben', :dob => '1929-04-04') 
    end 

    def down 
    end 
end 

這裏的問題:當我運行所有遷移文件(rake db:migrate),而不是最後一個(UpdateUser),然後運行一個新的遷移(rake db:migrate)和最後一個工作。但是,當我一步完成所有遷移(刪除,創建和遷移)時,它不起作用。

所以我必須排除最後一個遷移文件並在第一次「遷移循環」之後再包括它......爲什麼是這樣?

+0

找到ActiveRecord的遷移更多的信息也許你可以包括錯誤堆棧跟蹤,以便我們能夠更好地瞭解您的問題? – buruzaemon 2011-12-13 23:40:44

回答

3

爲什麼不在添加列時更新表格?因此,您必須在添加列後執行User.reset_column_information方法,以確保您的模型具有當前列信息。

add_column ... 

User.reset_column_information 

User.find(1).update_attributes!(:name => 'Alexander', :dob => '1984-08-20') 
User.find(2).update_attributes!(:name => 'Ben', :dob => '1929-04-04') 

您可以在http://api.rubyonrails.org/classes/ActiveRecord/Migration.html