我知道如何将一列添加到现有表中。现在我必须在现有表中添加许多列。是否有更短的方式:
add_col1_col2_col3_col4_.._coln_to_tables col1:integer col2:integer etc...
我是否必须对我必须添加的所有其他列进行上述操作?
答案 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
创建columns
和rails 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}}