是否有比此方法更好的向rails表添加新列的方法
class AddColumnsToUsers < ActiveRecord::Migration[5.1]
def change
add_column :users, :first_name, :string
add_column :users, :last_name, :string
add_column :users, :contact1, :integer
add_column :users, :contact2, :integer
add_column :users, :contact3, :decimal
add_column :users, :contact4, :integer
add_column :users, :contact5, :integer
add_column :users, :contact6, :string
add_column :users, :contact7, :integer
add_column :users, :contact8, :integer
add_column :users, :contact9, :integer
end
end
我们可以使用change_table方法并将其写在块中吗?而不是一次又一次地重复add_column
答案 0 :(得分:1)
您可以像这样将多个列添加到同一表中
def change
change_table :users do |t|
t.string :first_name
t.string :last_name
end
end
答案 1 :(得分:1)
如果只想晾干,也可以按照以下方式写
{
string: [:first_name, :last_name, :contact6],
integer: [:contact1 ,:contact2 ,:contact4 ,:contact5 ,:contact7 ,:contact8 ,:contact9],
decimal: [:contact3]
}.each do |type, columns|
columns.each { |col| add_column :users, col, type }
end