使用Apartment gem为新架构播种数据?

时间:2015-06-06 08:00:03

标签: ruby-on-rails ruby multi-tenant apartment-gem

如何在使用Apartment gem进行范围界定的多租户应用中播种新租户?

我在grain.rb中添加了以下内容,但它似乎与公寓无关:

tenants = Tenant.create([
{
  name: 'User1',
  domain: 'user1'
},
{
  name: 'User2',
  domain: 'user2'
}
])

即使数据库是空白的,seeds.rb也会尝试创建两次架构,并在rake db:seed执行此错误时失败:

Apartment::TenantExists: The schema user1 already exists.

1 个答案:

答案 0 :(得分:4)

Rails rake为您尝试创建的每个租户/模式运行任务。因此,首先检查当前架构是否为公共架构,以运行您的创建或种子任务。

这样的事情会发生。

if Apartment::Tenant.current == 'public'
  Apartment::Tenant.create('tenant1')
  Apartment::Tenant.create('tenant2')
end