如何使用迁移

时间:2013-01-15 20:53:13

标签: ruby-on-rails laravel

我开始使用Laravel(因为我知道两者之间的迁移类似,因此我在几周之前添加了RoR作为标记)并且仍在努力适应迁移。我曾尝试阅读一些文档和教程(对于Laravel和其他使用它们的框架,如Rails),他们通常会很好地解释如何使用它们,但我仍然没有掌握如何有效地使用它们。我有一些问题:

  1. 如果我在视图中创建一个表,稍后又决定添加几个列并可能删除其他几个列,我该怎么做?我知道编辑现有的迁移不是正确的方法。我是否添加了一个新的迁移,它会添加新列并删除旧列?如果是这样,是否有一个命名约定,当创建一个名为users的表时,所有教程通常将迁移命名为create_users,我是否称之为迁移update_users?如果我想对用户进行另一次更新,那么我将有两个名为Update_Users的类。此外,我对这种方法的问题是,我觉得我对数据库结构没有很好的概述,表格列可能分散在十几个迁移文件中。

  2. 如果我想用测试数据填充表格,最好是在单独的迁移中进行,例如Laravel 4中的种子吗?

  3. 我是否应该在每次迁移中只有一个表?据我所知,在我的create_users迁移中,我创建了三个表;用户,角色和role_user,最好将它们放在单独的迁移中吗?

1 个答案:

答案 0 :(得分:1)

  1. 编辑现有迁移不是一种方法。否则,在部署到生产系统时将不会使用更改(迁移号存储在数据库本身中以避免再次运行它们)。添加另一个迁移以执行更改。现有的更新/更改迁移没有真正的命名约定。所以按照你想要的方式命名。但是一个指出你进行迁移的原因的专有名称可能会有所帮助(例如AddCommentsToUsers)。

  2. Rails有一种播种机制(见Screencast)。你应该用它。数据迁移有其缺点。

  3. 我更喜欢每次迁移一个表。如果第一个表创建运行但第二个表没有,那么稍后当您尝试重新运行迁移时(在解决了任何问题之后),您会遇到麻烦。