【问题标题】:apartment gem - not creating tables postgresql公寓宝石 - 不创建表postgresql
【发布时间】:2020-08-21 04:08:19
【问题描述】:

Rails 5.x,postgres,apartment gem

仅在Apartment::Tenant.create('microsoft') 未创建其他20 个表时创建的两个表下面,仍在公共模式中。 microsoft 已创建架构但未创建表

这是我的apartment.rb

config.excluded_models = %w{ Account }

和租户名称

config.tenant_names = lambda { Account.pluck :domain }

使用架构

config.use_schemas = true

当我 rake db:migrate 时,它没有在 schema.rb 上创建任何东西,而我创建了一个带有公寓的新应用程序。它在schema.rb. 内部生成另一组迁移

例如:create_table "companies", force: :cascade do |t|

【问题讨论】:

    标签: ruby-on-rails apartment-gem


    【解决方案1】:

    请在初始化程序中检查您的 apartment.rb 文件。

    确认您的新租户已配置。如果你有一个静态数组,你需要扩展它。

    config.tenant_names = ['tenant1', 'myothertenant', 'microsoft']
    

    您可以通过在配置中添加 lambda 来使其成为动态:

    config.tenant_names = lambda { some_tenant_loading_func }
    

    还要检查您是否设置了 pg 特定选项:

    config.use_schemas = true
    

    此选项指定是使用 PostgreSQL 架构还是为每个租户创建一个新数据库。

    【讨论】:

      【解决方案2】:

      sql 格式已启用config/application.rb

      config.active_record.schema_format = :sql
      

      如公寓配置中所述,

      Apartment 可以强制使用原始 SQL 转储而不是 schema.rb 来创建新模式。 当您在 PostgreSQL 中使用一些无法在 schema.rb,如物化视图等(仅适用于 use_schemas 设置为 true)。 (注意:此选项不使用 db/structure.sql,它通过执行 pg_dump 创建 SQL 转储)

      config.use_sql = true
      

      修复了问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-17
        • 1970-01-01
        相关资源
        最近更新 更多