1

我正在开发一个使用 mysql 作为我的数据库的 Rails Web 应用程序。我创建了包含 3 列的表。我已经运行了“rake db:migrate”命令。

但现在我需要在表中再添加 2 列。我试图运行这个命令:

rails 生成迁移 Add'col1'和'col2'To col1:integer col2:integer

它正在文件\db\migrate\夹中创建一个包含以下内容的文件:

class Add<col1>And<col2>To<table_name> < ActiveRecord::Migration
  def change
    add_column :<table_name>, :<col1>, :integer
    add_column :<table_name>, :<col2>, :integer
  end
end

但是当我去 mysql 并查看我的表的内容时,没有添加列。我应该如何将列添加到现有表中?

请帮忙。

4

5 回答 5

1

除了创建迁移之外,您还需要运行它,使用rake db:migrate

于 2013-02-15T08:52:31.443 回答
0

http://guides.rubyonrails.org/migrations.html#migrations-are-classes

def change
     add_column :products, :part_number, :string
                 ^            ^              ^
                 table        column name    type
end

定义迁移后,您需要再次运行 db:migrate

于 2013-02-15T08:54:08.257 回答
0

rails 生成迁移 AddCol1AndCol2ToTable col1:integer col2:integer

带有表名的 raplace 表

于 2013-02-15T08:56:01.140 回答
0

迁移作为文件存储在 db/migrate 目录中,每个迁移类一个。该文件的名称采用 TIMESTAMP_create_products.rb 的形式,即标识迁移的 UTC 时间戳,后跟下划线,后跟迁移名称。Rails 使用此时间戳来确定应该运行哪个迁移以及以什么顺序运行,因此如果您要从另一个应用程序复制迁移或自己生成文件,请注意其在顺序中的位置。

要将特定列添加到数据库中的表中,您应该键入 rails 命令

rails 生成迁移 addColumnToProducts column:type

完成后,你可以做

耙分贝:迁移

您可以看到您添加了一个新的迁移,称为:

TIMESTAMP_add_column_to_products.rb 具有以下代码:

class addColumnToProducts < ActiveRecord::Migration
  def change
    add_column :products, :column, :type
  end
end

并且您已成功将列添加到数据库的表中。

于 2014-04-14T13:11:13.423 回答
0

所以你想在现有表中添加新列。您可以通过使用迁移执行以下说明来做到这一点。

1 -rails generate migration AddColumnToTableName

2 - 打开您将看到的迁移文件

AddColumnToTableName < ActiveRecord::Migration[5.0] def change end end

3 - 内部#change函数插入你需要的新列

 add_column :products, :part_number, :string
           (tablename) (coulmn name) (data type)

4-最后应该是这样的

class AddPartNumberToProducts < ActiveRecord::Migration[5.0] def change add_column :products, :part_number, :string end end

想了解更多关于移民的信息?

于 2016-02-06T20:39:43.703 回答