我在删除本地数据库中的多个列时遇到问题。
我的表名是'客户'在该表格中,我要删除的两个列是' phone'和'传真'
我一直在尝试一下这个
class CustomerCleanup < ActiveRecord::Migration
def change_table(:customers) do |t|
t.remove :fax, :phone
end
end
end
但是我仍然会收到一个语法错误,说明意外的tSYMBEG期待&#39;)&#39;
我已经查看过Here中的示例了......我也试过这个以获得相同的错误
class CustomerCleanup < ActiveRecord::Migration
def change_table(:customers) do |t|
t.remove :fax
t.remove :phone
end
end
end
有谁知道我在这里做错了什么?
答案 0 :(得分:5)
你试过了吗?
def change
remove_column :customers, :fax
remove_column :customers, :phone
end
如果您使用低于3.x的rails版本
def self.up
remove_column :customers, :fax
remove_column :customers, :phone
end
def self.down
# do something on rollback here or just do nothing
end
答案 1 :(得分:2)
我知道这是一个老问题并且有明确的答案,但没有人解决您的实际语法错误。您正在将方法定义与change_table调用相结合。正确的代码应该是:
class CustomerCleanup < ActiveRecord::Migration
def change
change_table(:customers) do |t|
t.remove :fax
t.remove :phone
end
end
end
答案 2 :(得分:0)
如果您想通过运行迁移从任何表中删除列,请尝试使用
rails g migration remove_columns_from_table_name field_name:datatype field_name:datatype
将 table_name 替换为要从中删除列的表,将 field_name:data_type 替换为要删除的列的列和数据类型。
迁移文件将如下所示
class RemoveColumnsFromTableName < ActiveRecord::Migration
def change
remove_column :table_name, :field_name, :data_type
remove_column :table_name, :field_name, :data_type
end
end
然后运行迁移
rake db:migrate
您还可以通过执行此类操作直接从rails console
删除列
ActiveRecord::Migration.remove_column :table_name, :column_name
答案 3 :(得分:0)
def up
remove_columns :customers, :fax, :phone
end
但是,如果您希望能够回滚,则必须定义一个单独的down
方法。