【问题标题】:Rails creating a table without migrationRails 创建没有迁移的表
【发布时间】:2012-10-01 13:16:27
【问题描述】:

我有一个 rails 应用程序,它有一个特定的表,其中数据甚至结构都是在 rails 和 ruby​​ 之外动态生成的。这是设计使然,它是一个特殊的表,其结构独立于其余的活动记录和关系。在它上面工作的模型也是原子的。再次所有的设计和目的。我不想要这个表的特定结构,这意味着每次初始化表时列名和列数都会改变。如果表结构发生变化,我可以管理模型类的变化。

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

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我想真的就是这么简单。谢谢。
    【解决方案2】:

    您可以将其设置为包含用于构建表的 SQL/rails 命令的 rake 任务(听起来像您正在使用它),类似于使用 rake db:seed 所做的操作

    【讨论】:

    • 那行得通,我只是将所有代码放入一个 rake 任务中,我可以根据需要随时更改它。谢谢。
    猜你喜欢
    • 2023-01-06
    • 2022-01-17
    • 1970-01-01
    • 2023-03-19
    • 2014-01-13
    • 2019-03-30
    • 2017-09-15
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多