【问题标题】:Apartment gem: How to rename tenant?公寓宝石:如何重命名租户?
【发布时间】:2015-12-15 06:40:20
【问题描述】:

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

请给我一些建议

【问题讨论】:

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


    【解决方案1】:

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

    如果您使用 Postgresql 和每个租户的架构:

    ALTER SCHEMA old RENAME TO new;
    

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

    RENAME TABLE current_tenant.table TO new_tenant.table;
    

    免责声明:未经测试。

    【讨论】:

      【解决方案2】:

      您可以通过以下方式更改名称(在我的情况下为子域):

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多