Rails Multi Tenancy播种问题

时间:2017-09-28 00:22:22

标签: ruby-on-rails ruby postgresql multi-tenant seeding

我使用Apartment gem和rails 5创建了一个多租户应用程序。我成功创建了一个新租户,但我想要播种它。当我运行种子文件时,它表明种子已经为这个新租户(Seeding tenant_name tenant)运行,但是那里没有数据,只有公共模式。 我可以在PostgreSQL db,public和新的seeds.rb上看到2个模式,但它只填充公共模式。为什么呢?

尝试穿上Apartment::Tenant.switch!('tenant_name')

if Apartment::Tenant.current == "tenant_name"...

Add expense - restructured group
Please complete the form below

josh
lifter
omar
Amount: 0
Description: expense

josh
lifter
omar
Amount: 0
Description: expense

josh
lifter
omar
Amount: 0
Description: expense

submit

但没有好处。

任何?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您的方法是正确的,但请确保这些:

  1. 确保PG中的schema_search_path
  2. 示例:database.yml应如下所示:

    default: &default
      adapter: postgresql
      schema_search_path: 'public,shared_extensions'
      encoding: unicode
      pool: 5
      prepared_statements: false
    
    development:
      <<: *default
    database: your_development_db
    

    2。 对于schema - 特定数据填充,在租户switch块内运行语句:

    seed.rb中,首先创建租户,然后像这样切换该租户:

    Apartment::Tenant.switch('tenant_name') do
      # Do all stuff here inside this block
      # User.create(user_attributes) will create use only inside `tenant_name` schema
    end
    

    振作!