Жемчужина квартиры: Как переименовать арендатора?

Можем ли мы переименовать арендатора в квартиру-жемчужину или нам нужно отказаться от арендатора и создать нового, чтобы добиться этого.

Пожалуйста, дайте мне несколько предложений

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

Другие вопросы по тегам