Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 公寓宝石:如何重命名租户?_Ruby On Rails 4_Multi Tenant_Apartment Gem - Fatal编程技术网

Ruby on rails 4 公寓宝石:如何重命名租户?

Ruby on rails 4 公寓宝石:如何重命名租户?,ruby-on-rails-4,multi-tenant,apartment-gem,Ruby On Rails 4,Multi Tenant,Apartment Gem,我们可以在公寓gem中重命名租户吗?或者我们必须删除租户并创建一个新租户才能实现这一点 请给我一些建议我不认为这可以通过公寓gem获得,但使用SQL查询相当简单。但这取决于您的设置 如果您使用Postgresql为每个租户提供架构: ALTER SCHEMA old RENAME TO new; 如果您使用的是MySql,那么应该重命名租户的表名前缀。如果数据库位于同一文件系统上,则此操作应有效: RENAME TABLE current_tenant.table TO new_tenant.

我们可以在公寓gem中重命名租户吗?或者我们必须删除租户并创建一个新租户才能实现这一点


请给我一些建议

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

如果您使用Postgresql为每个租户提供架构:

ALTER SCHEMA old RENAME TO new;
如果您使用的是MySql,那么应该重命名租户的表名前缀。如果数据库位于同一文件系统上,则此操作应有效:

RENAME TABLE current_tenant.table TO new_tenant.table;

免责声明:未经测试。

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

如果您使用Postgresql为每个租户提供架构:

ALTER SCHEMA old RENAME TO new;
如果您使用的是MySql,那么应该重命名租户的表名前缀。如果数据库位于同一文件系统上,则此操作应有效:

RENAME TABLE current_tenant.table TO new_tenant.table;
免责声明:未测试。

您可以更改名称(在我的情况下为子域),方法如下:

1) 您的模式应该是租户模型中的某个唯一列(
schema\u id
可以)。我从子域和租户ID生成它的值。 2) 在
公寓.rb
中,您
需要“公寓/电梯/通用”
。然后

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:另请参见此处-

您可以更改名称(在我的情况下为子域),方法如下:

1) 您的模式应该是租户模型中的某个唯一列(
schema\u id
可以)。我从子域和租户ID生成它的值。 2) 在
公寓.rb
中,您
需要“公寓/电梯/通用”
。然后

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
}
现在,在您发出正确的子域请求之后,您或您的租户用户可以编辑名称/子域,模式中的数据将是安全的

附言:另见此处-