在Ruby on Rails中使用Postgres Schema

问题描述 投票:0回答:2

我有一个单独的服务器,其中包含将由多个不同的应用程序使用的Ruby on Rails API(DB是postgres)。我正在考虑使用模式对每个应用程序所需的表进行排序,并使用“公共”模式,其中包含应用程序将共享的表(用户,员工等)。每个应用程序模式将有大约10个表,并且公共模式将包含大约15个。当前计划是使用此API使用相同的公共表的大约3-5个应用程序。

我的问题是,是否值得使用Ruby on Rails实现Postgres模式?我一直在寻找关于这个主题的一些资源,但似乎没有太多关于它的信息。有一些文章是在2011/2012年编写的,但没有更接近2018年。我一直在寻找的主要内容之一是如何正确地创建具有postgres模式的rails迁移。

我还阅读了一位用户的评论,声明他们已经分别使用了postgres和rails,但绝不会同时使用它们。

使用模式来组织数据库感觉是一个好主意,但如果需要大量的手动数据库工作/维护,则不想走这条路。

谢谢,

ruby-on-rails database postgresql schema
2个回答
1
投票

使用Rails可以轻松实现这一点,您必须覆盖Rails预期的默认表名,以指向特定的Schema:

class YourSchemaRecord < ApplicationRecord
  self.table_name_prefix = 'name_of_your_schema.'
end

class SomeRecord < ApplicationRecord
end

class YourCommonSchemaRecord < ApplicationRecord
  self.table_name_prefix = 'public.'
end

class SomeCommonRecord < YourCommonSchemaRecord
end

关于Rails迁移,您可以使用纯SQL(我最喜欢的选项)或使用Rails的内置方法,但是给出要更新结构的表的“完整路径”:

add_column 'name_of_your_schema.some_records', :some_column, :string

0
投票

我建议你通过apartment宝石。如果您使用postgres,它对单个db多个模式有很大的支持。或者,如果你想自己实现所有,那么请浏览这个railscasts剧集。你会知道如何处理它。

© www.soinside.com 2019 - 2024. All rights reserved.