在 Rails 3 中说,你有一个模型User
,因此它的表被称为:users
发生了可怕的错误,您需要删除表格,但您不能,因为您还有其他对user_id
. 所以你需要清除你的users
表模式。
基本上你需要的是一种删除所有列的方法。
如果您的表格有超过 40 列,您可以忘记样式
remove_column :users, :col1
您需要一次完成所有操作。在一次迁移中
在 Rails 3 中说,你有一个模型User
,因此它的表被称为:users
发生了可怕的错误,您需要删除表格,但您不能,因为您还有其他对user_id
. 所以你需要清除你的users
表模式。
基本上你需要的是一种删除所有列的方法。
如果您的表格有超过 40 列,您可以忘记样式
remove_column :users, :col1
您需要一次完成所有操作。在一次迁移中
假设您已经使用
rails g migration PurgeOldUsersSchema
所以这就是你的迁移应该是什么样子
class PurgeOldUsersSchema < ActiveRecord::Migration
def change
cols = []
User.columns.collect(&:name).each do |col|
cols.push(col.to_sym)
end
cols = cols - [:id]
remove_column :users, cols
end
end
请记住这- [:id]
是必要的,因为 rails 不允许您删除主键。在此数组中,您可以添加要在清除操作后保留的任何列名。
这样可以使您在架构中对该表的引用保持不变,但无论如何您都会清除数据,因此相关性不大。:-)
更新
已尝试过此解决方案,但remove_column :users, cols
对我不起作用,因此我不得不将其替换为:
cols.each { |col| remove_column :users, col }
在终端中运行rake db:migrate:down VERSION=XXX
,它应该删除用户表上的所有数据。
然后运行:rake db:migrate