我對Ruby on Rails這裏相當陌生。rake db:migrate正確運行所有遷移
我有2個遷移文件提供。第一個以001爲前綴,爲該表創建一個表格和一些列。下一個遷移文件(以002爲前綴)將行插入到文件001中創建的表中。
運行遷移(rake db:在命令行中遷移)可以正確創建表,但不會插入任何問題。從插入的代碼看起來是這樣的(除了多了很多Student.create陳述,
class AddStudentData < ActiveRecord::Migration
def self.up
...
Student.create(:name => "Yhi, Manfredo", :gender => "M")
...
end
def self.down
Student.delete_all
end
end
我的理解是,學生是一個模型對象,所以我的學生模型看起來像這樣,
class Student < ActiveRecord::Base
end
我需要明確地定義一個學生創建方法或者是東西,給了(這個項目用腳手架製造)
感謝
編輯1?:我使用達米安的建議,並呼籲create!
而不是create
,但得到了同樣的迴應。然後我做了什麼,看該代碼是否已達到甚至遠遠是調用此方法,
Student.create12312313!(:name => "foo", :gender => "M")
這顯然是無效的代碼和遷移沒有拋出任何錯誤。
編輯2:找到答案。 schema_migrations表的版本設置爲3,並且我只有3個不同的遷移文件,因此它從未運行過我的任何遷移文件。這就是爲什麼什麼都不會更新,我使用的虛假創建從未拋出錯誤。學生數據第一次沒有被插入的原因是因爲某個表已經在數據庫中,並且在我第一次遷移時就引發了衝突。所以我真正想要的不是db:migrate
而是db:reset
花了好幾個小時。
我做了你的建議,但得到了相同的結果...然後我改變了創建方法廢話(請參閱原始文章的更新)和遷移繼續正常工作。 – tipu 2009-11-16 12:44:01