我正在尝试创建一个通过表列表的Sequel迁移,如果该表还没有该列,则尝试添加一个特定的列。
例如:
Sequel.migration do
change do
table_list = [:table1, :table2, :table3]
table_list.each do |t|
if t does not have :specific_column yet
alter_table(t) do
add_column :sepcific_column, type: String
end
end
end
end
end
是否可以判断该列是否已存在于表中,因此我可以相应地执行操作?
答案 0 :(得分:1)
是的,有可能。方法Dataset#columns
返回列列表。可以使用include?
完整示例:
Sequel.migration do
change do
table_list = [:table1, :table2, :table3]
table_list.each do |t|
if ! self[t].columns.include?(:specific_column)
alter_table(t) do
add_column :specific_column, type: String
end
end
end
end
end
或
Sequel.migration do
change do
table_list = [:table1, :table2, :table3]
table_list.each do |t|
alter_table(t) do
add_column :specific_column, type: String
end unless self[t].columns.include?(:specific_column)
end
end
end
end