从架构中删除表而不从数据库中删除它?

时间:2014-05-06 15:02:05

标签: mysql ruby-on-rails ruby-on-rails-4 migration

我最近开始在我的Rails项目中使用现有数据库,但我意识到该数据库中的所有表都已合并。

我仍然需要其中一些表,而不是这个项目。

我担心通过迁移删除它们也会将它们从我的实际数据库中删除。我可以从schema.rb手动删除它们吗?

2 个答案:

答案 0 :(得分:3)

db/schema.rb就像是完整数据库的蓝图。所以,不,它不可能在数据库中有表并避免在db/schema.rb中显示它们,因为它将选择数据库的完整模式。即使您在数据库中手动添加新表(即没有迁移),它仍会反映在db/schema.rb

根据Rails指南,

  

请注意,运行db:migrate任务还会调用db:schema:dump   task,它会将db / schema.rb文件更新为匹配结构   您的数据库

Rails指南的另一个参考资料总结了

  

迁移,尽管可能很强大,但并不是权威来源   对于您的数据库架构。该角色属于db / schema.rb或   SQL文件通过检查数据库生成Active Record 。他们   不是为了编辑而设计的,它们只代表当前的状态   数据库

答案 1 :(得分:-2)

创建一个空的迁移文件并对其进行编辑以使用drop table:

drop_table :table_name