在Rails中更新模型/迁移

9
假设我使用以下命令创建“用户”模型:
script/generate model User username:string

这将创建user.rb文件以及迁移rb文件,用于创建Users表。现在,我想向我的User模型添加一个电子邮件列。最好的方法是什么?我需要手动编写迁移文件吗,还是有快捷方式可以完成它?如果我手动编写迁移文件,是否必须与之前的迁移脚本命名相同(在时间戳前面),以确保它在之前的迁移之后运行?

3个回答

6
不用担心时间戳,它会自动生成。您可以执行操作。
rails generate migration add_email_to_user email:string

这将自动生成一个迁移文件,其内容如下:
class AddEmailToUser < ActiveRecord::Migration
  def self.up
    add_column :email, :string
  end

  def self.down
    remove_column :email
  end
end

对于Rails 2.1及以上版本,文件名前面会添加时间戳,格式为YYYYMMDDHHMMSS


3

这个指南提供了关于生成迁移的信息。如果你使用Rails生成器,它会创建正确命名的文件:

ruby script/generate migration AddEmailToUser email:string

1

你可以做两件事:

1)如果你还没有在任何地方部署它,或者你不介意删除数据库并重新运行迁移,那么修改文件。从你的数据库中删除表,并运行db:migrate。在开发中很容易做到这一点。

2)如果此应用程序正在生产中,或者您不想删除所有表格。然后创建一个新的迁移文件。然后在这个新的迁移中添加/修改/删除列。然后运行db:migrate,新的更改将在您的表中生效。这是最佳实践。

至于命名您的迁移,时间戳被使用,因为Rails会创建一个表来跟踪最新的迁移。为此,最好使用时间戳。但如果您选择,您可以使用自己的约定而不是时间戳。也许将它们命名为001_migration.rb、002_migration.rb等。

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接