我用Apartment gem和rails 5创建了一个多租户应用程序。我成功创建了一个新的租户,但我想要播种它。当我运行种子文件时,它表明种子已经为这个新租户(Seeding tenant_name tenant)运行,但是那里没有数据,只有公共模式。我可以看到在PostgreSQL
db,public
和新版本上创建了两个模式,但它只填充了公共模式。为什么?
尝试穿上seeds.rb
:
Apartment::Tenant.switch!('tenant_name')
和:
if Apartment::Tenant.current == "tenant_name"...
但没有好处。
任何人?
提前致谢!
您的方法是正确的,但请确保这些:
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
欢呼!