Жемчужина квартиры: Как переименовать арендатора?
Можем ли мы переименовать арендатора в квартиру-жемчужину или нам нужно отказаться от арендатора и создать нового, чтобы добиться этого.
Пожалуйста, дайте мне несколько предложений
2 ответа
Я не думаю, что это доступно через жемчужину квартиры, но это довольно просто сделать с запросом SQL. Это зависит от вашей настройки, хотя.
Если вы используете Postgresql со схемой для каждого арендатора:
ALTER SCHEMA old RENAME TO new;
Если вы используете MySql, вам следует переименовать префиксы имен таблиц для арендатора. Это должно работать, если базы данных находятся в одной файловой системе:
RENAME TABLE current_tenant.table TO new_tenant.table;
Отказ от ответственности: не проверено.
Вы можете изменить имя (в моем случае поддомен), выполнив что-то вроде этого:
1) Ваша схема должна быть уникальным столбцом в модели Tenant (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
}
Теперь, после того как вы сделаете правильный запрос субдоменов, вы или ваш пользователь-арендатор сможете редактировать имя / субдомен, и данные в схемах будут в безопасности.
PS: также смотрите здесь - https://github.com/influitive/apartment/issues/242