Rails Multi Tenancy播种问题

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

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

尝试穿上seeds.rb

Apartment::Tenant.switch!('tenant_name')

和:

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

但没有好处。

任何人?

提前致谢!

ruby-on-rails ruby postgresql multi-tenant seeding
1个回答
1
投票

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

  1. 确保PG中的schema_search_path

示例: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

欢呼!

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