2014-05-06 66 views
2

我最近开始在Rails项目中使用现有的数据库,但是我意识到所有来自该数据库的表都被合并了。从模式中删除表而不从数据库中删除它?

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

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

+1

通过'schema',你的意思是'db/schema.rb'吗? –

+0

看这里(http://stackoverflow.com/questions/9884429/rails-what-does-schema-rb-do)阅读有关schema.rb的目的,ActiveRecord不使用它加载数据库表。所以从那里删除任何东西都没有目的。 – Iceman

+1

为什么你想从你的模式中删除它们?我的意思是,在架构中使用它们会导致什么问题? –

回答

-2

创建一个空迁移文件并编辑它使用DROP TABLE:

drop_table :table_name

+0

谢谢@tTam。我应该在运行'rake db:migrate'之后吗? – veryrarecandy

+1

这实际上会从数据库中删除表。你想要吗? @jiggabits –

+1

@Kirti不,我不想从我的数据库中删除表。从我的模式。 – veryrarecandy

3

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

按照Rails的指南,

注意运行分贝:迁移任务还会调用db:schema:dump 任务,该任务会将您的db/schema.rb文件更新为,与您的数据库的结构 相匹配。

从Rails的指南另一个参考概括起来

迁移,强大的,因为他们可能是不适合你的数据库架构的权威来源 。该角色落在db/schema.rb或Active Record通过检查数据库生成的SQL文件中。他们 不是为了编辑而设计的,他们只是代表数据库的当前状态 。

+1

好点+1 :) – Pavan

相关问题