公寓gem:如何重命名租户?

Apartment gem: How to rename tenant?

我们能否重命名 apartment-gem 中的租户,或者我们必须删除租户并创建一个新租户才能实现此目的。

请给我一些建议

我不认为这可以通过公寓 gem 获得,但使用 SQL 查询非常简单。不过这取决于您的设置。

如果您将 Postgresql 与每个租户的架构一起使用:

ALTER SCHEMA old RENAME TO new;

如果您正在使用 MySql,您应该重命名租户的 table 名称前缀。如果数据库在同一个文件系统上,这应该有效:

RENAME TABLE current_tenant.table TO new_tenant.table;

免责声明:未经测试。

您可以像这样更改名称(在我的例子中是子域):

1) 您的模式应该是租户模型中的某个唯一列(schema_id 很好)。我从子域和租户 ID 生成它的值。 2) 在apartment.rbrequire "apartment/elevators/generic"。那么

config.tenant_names = -> { Tenant.pluck :schema_id }

因此您使用租户名称等架构内容。 然后在文件底部添加

Rails.application.config.middleware.use "Apartment::Elevators::Generic", lambda { |request|
  Tenant.find_by(subdomain: request.host.split(".").first).schema_id
}

现在,在您进行适当的子域请求后,您或您的租户用户可以编辑 name/subdomain,架构中的数据将是安全的。

PS:另见此处 - https://github.com/influitive/apartment/issues/242