我最近开始在Rails项目中使用现有的数据库,但是我意识到所有来自该数据库的表都被合并了。从模式中删除表而不从数据库中删除它?
我仍然需要这些表中的一部分,而不是这个项目。
恐怕通过迁移删除它们也会将它们从我的实际数据库中删除。我可以从schema.rb手动删除它们吗?
我最近开始在Rails项目中使用现有的数据库,但是我意识到所有来自该数据库的表都被合并了。从模式中删除表而不从数据库中删除它?
我仍然需要这些表中的一部分,而不是这个项目。
恐怕通过迁移删除它们也会将它们从我的实际数据库中删除。我可以从schema.rb手动删除它们吗?
创建一个空迁移文件并编辑它使用DROP TABLE:
drop_table :table_name
谢谢@tTam。我应该在运行'rake db:migrate'之后吗? – veryrarecandy
这实际上会从数据库中删除表。你想要吗? @jiggabits –
@Kirti不,我不想从我的数据库中删除表。从我的模式。 – veryrarecandy
db/schema.rb
就像是你的完整的数据库的蓝图。所以,不,它不可能在数据库中有表格,并且避免在db/schema.rb
中显示它们,因为它会选择数据库的完整模式。即使你在你的数据库去手动添加新表(即无迁移),它仍然会体现在db/schema.rb
按照Rails的指南,
注意运行分贝:迁移任务还会调用db:schema:dump 任务,该任务会将您的db/schema.rb文件更新为,与您的数据库的结构 相匹配。
从Rails的指南另一个参考概括起来
迁移,强大的,因为他们可能是不适合你的数据库架构的权威来源 。该角色落在db/schema.rb或Active Record通过检查数据库生成的SQL文件中。他们 不是为了编辑而设计的,他们只是代表数据库的当前状态 。
好点+1 :) – Pavan
通过'schema',你的意思是'db/schema.rb'吗? –
看这里(http://stackoverflow.com/questions/9884429/rails-what-does-schema-rb-do)阅读有关schema.rb的目的,ActiveRecord不使用它加载数据库表。所以从那里删除任何东西都没有目的。 – Iceman
为什么你想从你的模式中删除它们?我的意思是,在架构中使用它们会导致什么问题? –