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

时间:2015-03-03 15:56:33

标签: ruby-on-rails ruby ruby-on-rails-4

我知道如何将一列添加到现有表中。现在我必须在现有表中添加许多列。是否有更短的方式:

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

我是否必须对我必须添加的所有其他列进行上述操作?

6 个答案:

答案 0 :(得分:40)

没有必要。你可以做到

假设TableName是用户

rails g migration AddColumnsToUser col1:integer col2:integer .. etc.

答案 1 :(得分:15)

这是ActiveRecord:Migrations上的一个很好的资源,其中列出了可用于操作数据库的所有命令。你也可以这样做:

rails g migration AddMoreColumnsToModel

然后打开迁移文件并输入:

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

如果你想做Maxd建议的事情,拥有相同类型的100列自动创建,他的代码是个好主意。

答案 2 :(得分:5)

只需创建迁移并生成这些列,即:

class ChangeTables < ActiveRecord::Migration
  def change
    change_table :tables do |t|
      100.times do |i|
        t.integer :"column_#{i}"
      end
    end
  end
end

答案 3 :(得分:1)

此迁移文件可以循环完成。 但你真的想这样做吗?创建如此重型的模型以保存所有内容看起来不正确。

答案 4 :(得分:1)

与上述答案类似,但为了理解目的,希望在命名惯例之下是好的。

rails g migration add_first_column_and_second_column_to_model first_column:string second_column:string

答案 5 :(得分:0)

使用table创建columnsrails g model ModelName col_name1:string col_name2:integer col_name3:text ... 的命令:

columns

命令在现有表格下添加更多rails g migration AddColumnToModelName col_name4:string col_name5:integer ...

migration

最后,按命令运行rake db:migrate

{{1}}