如何定义rails模型设置的模式?

时间:2010-12-24 11:23:37

标签: ruby-on-rails postgresql schema

例如,当我生成一个Event模型时,该表会自动设置为公共模式。如何指定它以设置为不同的模式?

此外,您如何更改现有表的架构?也许将它移到另一个架构?

谢谢!

2 个答案:

答案 0 :(得分:1)

免责声明:我不知道rails,所以我将在这里给出非常postgresql的答案。对于问题的第一部分,通过在创建表时指定模式,可能有更好的方法来实现这一点。

在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更改表格的架构。

答案 1 :(得分:0)

创建迁移以生成新架构。 ActiveRecord无法将模式更新为您的模式系统。如果要从代码中更新架构,可以尝试续集或DataMapper。