2012-10-10 26 views
5

我有一个Rails应用程序,其中有一个特定的表,其中的数据,甚至结构动态生成的轨道和红宝石之外。这是在设计上,它是一个特殊的表格,其中的结构是从其余的活动记录和关系中独立出来的。在它上面工作的模型也是原子的。再次全部由设计和有目的的。我不希望此表具有特定的结构,这意味着每次表初始化时列名称和列数都可以更改。如果表格结构发生变化,我可以管理对模型类的更改。Rails无移植创建表

我的问题是,rails的迁移过程似乎妨碍了我的工作,我不想在迁移和回滚之间来回切换,只是为了得到这个表的重置状态。

我正在寻找的行为实际上每次我为这个表“生成”数据时,我想删除可能已存在的表(在所有环境中:生产,开发和测试)。

是否有明确的方法来绕过迁移过程?或者创建一个独立于应用程序中其他迁移序列的特殊迁移?

整个数据库不是一次性的,但是这个表是。

有关如何实现此行为的想法?

Rails 3中,PostgreSQL数据库,Git版本控制,Heroku的托管

回答

2

我认为简单的答案是“不使用迁移” - 他们的目的是帮助你比较正常延长原本静态的数据库模式。除了生成/执行数据库的数据定义语言(DDL)之外,迁移还有很多功能 - 它知道如何前后移动,通过源代码(schema.rb)与数据(在schema_migrations表中)之间的链接知道如何执行确定哪些迁移需要运行,等等。所有你需要的是执行DDL的部分(毕竟,这只是一种SQL)。

而且至少有一部分是here in the TableDefinition API。您可能需要的所有基础架构似乎都存在。

+0

做导轨用于构建表,类似的命令我猜真的很简单。谢谢。 –

2

您可以将该字段设置为包含SQL rake任务(这听起来像你正在使用它作为什么)/什么用rake db:seed

+0

这很有效,我只是把所有的代码放到一个rake任务中,我可以根据需要随时更改它。谢谢。 –