database - Rails 创建一个没有迁移的表

标签 database ruby-on-rails-3 migration create-table rake-task

我有一个 Rails 应用程序,它有一个特定的表,其中的数据甚至结构都是在 Rails 和 Ruby 之外动态生成的。这是设计使然,它是一个特殊的表,其中的结构独立于事件记录和关系的其余部分。在它上面工作的模型也是原子的。同样,这一切都是出于设计目的,而且是有目的的。我不想要这个表的特定结构,这意味着每次初始化表时列名和列数都可以更改。如果表结构发生变化,我可以管理对我的模型类的更改。

我的问题是 Rails 迁移过程似乎妨碍了我,我不想在迁移和回滚之间来回走动,只是为了重置这个单表的状态。

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

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

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

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

Rails 3、PostgreSQL 数据库、git 版本控制、heroku 托管

最佳答案

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

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

关于database - Rails 创建一个没有迁移的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12829996/

相关文章:

python - Pandas 多索引和数据帧列表中的堆栈

node.js - 使用 Node.JS 访问数据库 informix

mysql - MySQL 数据库列的时间格式无法识别

postgresql - 将数据从 Postgresql 移动到 Redis(DB-1)

Mysql简单查询报错

ruby-on-rails - 使用 devise 和 Rails 3 重定向到特定页面

ruby-on-rails-3 - 我可以在 Rails 中锁定一个表吗? (我应该吗?)

ruby-on-rails - 你如何使用 ActionDispatch::Routing::RouteSet 识别路径?

mysql - 将 Django 项目从 MySQL 迁移到 PostgreSQL 的最简单方法

svn - 从 StarTeam 5 迁移到 Subversion 的策略?