2015-12-15 2 views

ответ

4

Я не думаю, что это доступно через многоквартирном камень, но это довольно просто сделать с помощью запроса SQL. Это зависит от вашей настройки.

Если вы используете Postgresql со схемой для каждого арендатора:

ALTER SCHEMA old RENAME TO new; 

Если вы используете MySql, вы должны переименовать имя таблицы префиксов для арендатора. Это должно работать, если базы данных находятся в одной и той же файловой системе:

RENAME TABLE current_tenant.table TO new_tenant.table; 

Отказ от ответственности: не проверено.

+1

Благодаря @zwippie "ALTER SCHEMA старый Присвоить новый" это сделал ..... –

2

Вы можете изменить имя (в моем случае поддомен) делать что-то вроде этого:

1) Ваша схема должна быть какая-то уникальная колонка в арендаторах модели (shema_id штраф). Я генерирую его значение из поддомена и идентификатора арендатора. 2) В apartment.rb вы require "apartment/elevators/generic". Затем

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

так что вы используете вещи shema, такие как имя арендатора. Затем на нижней части файла добавить

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