代码之家  ›  专栏  ›  技术社区  ›  SegFaultDev

在Ruby-on-Rails中使用Postgres模式

  •  0
  • SegFaultDev  · 技术社区  · 7 年前

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

    我的问题是,用rubyonrails实现Postgres模式值得吗?我一直在寻找一些关于这个话题的资源,但似乎没有太多的信息。有几篇文章写在2011/2012年,但没有一篇接近2018年。我一直在寻找的一个主要问题是如何正确地使用postgres模式创建rails迁移。

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

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

    谢谢,

    2 回复  |  直到 7 年前
        1
  •  4
  •   MrYoshiji    7 年前

    这可以通过Rails轻松实现,但您必须重写Rails期望的默认表名,以指向特定的模式:

    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
    
        2
  •  0
  •   Akshay Goyal    7 年前

    apartment 宝石。如果您使用postgres,它对单db多模式有很好的支持。或者,如果你想自己去实现,那就来完成这个 railscasts 插曲。你会知道如何接近它。