2011-02-01 55 views
1

我在Rails应用程序中生成了四个模型,现在我想通过迁移为相同的模型创建表格。生成的Rails模型 - 迁移将如何运行?

的空白迁移在我/db/migrate文件夹坐在那里,现在,以何种顺序将迁移运行,如果我这样做rake db:migrate

,我应该做些什么来确保我的表都产生。我应该继续并在我的模型中定义关联,然后运行迁移?

因为,如果我按照原样运行它们,Rails是如何计算出t.references部分迁移的?

请帮忙。

回答

3

迁移不直接与您的模型相关联。在运行迁移之前,您无需担心将东西(例如关联)放入模型中或将它们排除在外。迁移只是创建或修改数据库表的一个方法,它是字段/列。您可以在运行迁移之前或之后对模型的关联进行分类。没关系。

迁移按迁移文件名的顺序运行。如果您通过script/generate model YourModelNamescript/generate migration MyMigration创建了迁移,则时间戳(例如20110201165030)始终位于文件名的前面。这可确保迁移按您生成的顺序运行。

t.references部分不需要弄清楚什么。它只接受下一个符号,将其作为一个字符串,追加_id并在数据库表中创建一个具有该(新)名称的整数字段。这只是一个惯例。它肯定是而不是看着你的模型的任何关联。 (这里给出的代码示例是针对Rails 2.3的,如果你使用的是Rails 3,我认为生成的命令有些不同)。

4

您实际上不需要使用引用(它们不强制执行外键)。如果您喜欢该语法,参考文献可能只会让您更容易阅读。这两个迁移是等效的:

 
create_table :posts do |t| 
    t.references :category 
end 

create_table :posts do |t| 
    t.integer :category_id 
end 

而且,迁移将在其定义的顺序运行(即在它们被创建的顺序)。

+0

所以,对于4款车型,我现在有4次迁移。如果我做`rake db:migrate`是应该运行所有4个迁移? – 2011-02-01 03:31:30