ruby-on-rails - 使用 Apartment gem 为新模式播种数据?

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

如何在使用 Apartment gem 进行范围界定的 Multi-Tenancy 应用程序中播种新租户?

我将以下内容添加到 seeds.rb,但它似乎不适用于 apartment:

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

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

Apartment::TenantExists: The schema user1 already exists.

最佳答案

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

像这样的东西就可以了。

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

关于ruby-on-rails - 使用 Apartment gem 为新模式播种数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30680417/

相关文章:

javascript - DOM 元素属性未定义 - jquery/ruby on Rails

ruby - 如何为 emacs 安装 ruby​​-mode

c# - Ruby base64 到 C# base64

Hibernate 4.1.1 Multi-Tenancy CurrentTenantIdentifierResolver 方法,任何示例

api - 同一端点的 Multi-Tenancy 实现

ruby-on-rails - 如何将 gem 转换为 ruby​​ on Rails 中的插件,反之亦然?

ruby-on-rails - 如何检查字符串是否为有效日期

ruby-on-rails - 如何在 Rails 中验证 url

ruby - 使用 Ruby 将数组写入多列 CSV 格式

sql-server - 在 Multi-Tenancy 数据库中索引租户 ID