ruby-on-rails - 如何定义 Rails 模型设置的架构?

标签 ruby-on-rails postgresql schema

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

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

谢谢!

最佳答案

免责声明:我不了解 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 更改表的架构。

关于ruby-on-rails - 如何定义 Rails 模型设置的架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4526030/

相关文章:

ruby-on-rails - Geocoder rails,检查是否有效

ruby-on-rails - [xxx] :Array when trying to use array data on Active Admin table_for (Rails, Postgresql、postgres_ext gem 的错误未定义方法 `to_key')

sql - 查询最近 20 天的平均值

database - 将 n-gram 存储在数据库中 < n 个表中

ruby-on-rails - 如何在没有 3rd 方工具的情况下生成网站缩略图?

ruby-on-rails - Rails Validation numbericality 在表单对象上失败

ruby-on-rails - RefineryCMS 引擎错误 : did not have a valid gemspec

mysql - 我们如何将 PostgreSQL 中的序列迁移到 Mysql

javascript - GraphQL:架构不可用

java - 将 spring-boot-starter-parent 1.4.3 与 maven 一起使用时解析生命周期处理指令时出错(在 1.4.2 上运行良好)