【问题标题】:How do define the schema that a rails model is set to?如何定义 rails 模型设置的模式?
【发布时间】:2011-05-30 09:19:21
【问题描述】:

例如,当我生成事件模型时,表会自动设置为公共模式。如何指定它以设置为不同的架构?

此外,您如何更改现有表的架构?也许将其移至不同的架构?

谢谢!

【问题讨论】:

    标签: ruby-on-rails postgresql schema


    【解决方案1】:

    免责声明:我不了解 Rails,所以我将在这里给出非常面向 postgresql 的答案。对于您问题的第一部分,很可能有更好的方法来做到这一点,即在创建表时让 rails 指定架构。

    在 PostgreSQL 中,根据 search_path 设置在模式中搜索表。默认设置为"$user",public。表是在存在的搜索路径中找到的第一个模式中创建的。因此,如果您以“my_user”身份连接,它将尝试在“my_user”中创建表,如果“my_user”不存在,则回退到在“public”中创建它们。

    因此,一种方法是更新用于连接到数据库的用户的“search_path”设置以进行架构更改。例如,您可以说ALTER USER my_user SET search_path = my_app, public。如果您随后创建“my_app”架构,那么“my_user”执行的后续CREATE TABLE foo(...) 命令会将新表放入“my_app”中。

    您可以使用ALTER TABLE foo SET SCHEMA my_app 更改表的架构。

    【讨论】:

      【解决方案2】:

      创建迁移以生成新架构。 ActiveRecord 不能更新你的模式,它是模式系统。如果您想从代码中更新架构,可以尝试使用 sequel 或 DataMapper。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-23
        • 1970-01-01
        • 2011-12-12
        • 1970-01-01
        • 2012-10-10
        • 1970-01-01
        相关资源
        最近更新 更多