1

我们能否在apartment-gem中重命名租户,或者我们必须删除租户并创建一个新租户来实现这一点。

请给我一些建议

4

2 回答 2

4

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

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

ALTER SCHEMA old RENAME TO new;

如果您使用的是 MySql,则应为租户重命名表名前缀。如果数据库位于同一文件系统上,这应该可以工作:

RENAME TABLE current_tenant.table TO new_tenant.table;

免责声明:未经测试。

于 2015-12-15T09:50:51.610 回答
4

您可以执行以下操作更改名称(在我的情况下为子域):

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
}

现在,在您提出适当的子域请求后,您或您的租户用户可以编辑名称/子域,并且架构中的数据将是安全的。

PS:另见这里 - https://github.com/influitive/apartment/issues/242

于 2016-02-10T09:08:11.333 回答