我们是否可以在 apartment-gem 中重命名租户,或者我们必须删除租户并创建一个新租户才能实现此目标。
请提供一些建议
答案 0 :(得分:5)
我不认为这可以通过apartment gem获得,但是使用SQL查询相当简单。这取决于你的设置。
如果您正在为每个租户使用带有架构的Postgresql:
ALTER SCHEMA old RENAME TO new;
如果您使用的是MySql,则应重命名租户的表名前缀。如果数据库位于同一文件系统上,这应该有效:
RENAME TABLE current_tenant.table TO new_tenant.table;
免责声明:未经测试。
答案 1 :(得分:2)
您可以更改名称(在我的情况下是子域名),执行以下操作:
1)您的架构应该是租户模型中的一些唯一列(schema_id
很好)。我从子域和租户ID生成它的值。
2)在apartment.rb
你require "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
}
现在,在您提出正确的子域请求后,您或您的租户用户可以编辑名称/子域名,并且模式中的数据将是安全的。