Rails创建一个没有迁移的表

Gor*_*ter 7 database migration heroku rake-task ruby-on-rails-3

我有一个rails应用程序,它有一个特定的表,其中数据甚至结构是在rails和ruby之外动态生成的.这是一个设计,它是一个特殊的表,其中结构是从其他活动记录和关系中自包含的.对其起作用的模型也是原子的.所有这些都是设计和有目的的.我不想要这个表的特定结构,这意味着每次初始化表时列名和列数都会改变.如果表结构有变化,我可以管理对模型类的更改.

我的问题是rails迁移过程似乎妨碍了,我不想在迁移和回滚之间来回徘徊,只是为了让这个单个表的状态重置.

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

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

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

关于如何实现这种行为的想法?

Rails 3,PostgreSQL数据库,git版本控制,heroku主机

Tom*_*son 2

我认为简单的答案是“不要使用迁移”——它们旨在帮助您相对优雅地扩展静态数据库模式。schema.rb除了生成/执行数据库的数据定义语言 (DDL) 之外,迁移还可以做很多事情 - 它知道如何前进和后退,通过源代码 ( ) 和数据(表中)之间的链接知道如何schema_migrations确定哪个需要运行迁移等等。您所需要的只是执行 DDL 的部分(毕竟,这只是一种 SQL)。

至少其中一部分位于TableDefinition API 中。您可能需要的所有基础设施似乎都已存在。