Rails 4:向现有表添加多个列

35

我知道如何在现有的表中添加一列。现在我需要在现有的表中添加许多列。是否有更简便的方法:

add_col1_col2_col3_col4_.._coln_to_tables col1:integer col2:integer etc...

我需要为我要添加的所有额外列都执行上述操作吗?

6个回答

64
不必要。你可以做。
假设TableName是用户。
rails g migration AddColumnsToUser col1:integer col2:integer .. etc.

你能指定像整数数组这样的东西吗?add_column :disciplines, :days, :integer, array: true - Arian Faurtosh

21

这里有一个关于ActiveRecord:Migrations的好资源,列出了您可以使用的所有命令来操纵数据库。您也可以通过以下方式完成此任务:

rails g migration AddMoreColumnsToModel

然后打开迁移文件并添加:

def change
  add_column :table, :new_column, :type
  # add as many columns as you need 
end

如果你想按照Maxd的建议去做,让100个同类型的列自动创建,他的代码是一个好主意。


11
只需创建迁移并生成这些列,例如:
class ChangeTables < ActiveRecord::Migration
  def change
    change_table :tables do |t|
      100.times do |i|
        t.integer :"column_#{i}"
      end
    end
  end
end

3
与以上答案类似,但为了理解的目的,希望以下命名规则是好的。
rails g migration add_first_column_and_second_column_to_model first_column:string second_column:string

1

这个迁移文件可以用循环完成。 但是你真的想这样做吗?创建一个如此庞大的模型来保存所有内容似乎并不正确。


0

创建包含新模型表格的命令:

rails g model ModelName col_name1:string col_name2:integer col_name3:text ...

在现有表格下添加更多的命令:

rails g migration AddColumnToModelName col_name4:string col_name5:integer ...

最后,通过命令运行migration
rake db:migrate

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