Создание пользовательских доменов будет немного сложным, так как вам придется управлять доменами и DNS вручную. Однако это возможно. Вы должны настроить несколько доменов и указать их все для своего приложения Затем в вашем контроллере вы проверите, какая школа соответствует request.host
.
Более простым решением является настройка каждой школы с поддоменом. Это не потребует пользовательской настройки и очень хорошо описано в этой статье: https://mythoughts.io/managing-dynamic-domains-with-rails-b6ab1040dc8c.
Надеюсь, это поможет ответить на ваш вопрос,
Ben
Обновление для предоставления конкретных деталей реализации:
На вашем объекте School
я бы добавил атрибут domain
типа string. Это должно быть проверено как на уникальность, так и на присутствие:
# Within School.rb:
validates :domain, presence: true, uniqueness: true
Затем, в вашем ApplicationController, реализуйте поиск before_action
, чтобы найти школу на основе запрашивающего URL. Это будет в формате school1.com или school2.com. Обратите внимание, что использование !
автоматически вызовет ошибку 404, если школа не найдена.
before_action :find_school
private
def find_school
@school = School.find_by_domain!(request.host)
end
Чтобы проверить это локально, вы можете отредактировать файл hosts с помощью следующей команды:
sudo nano /etc/hosts
Добавьте следующие строки:
127.0.0.1 school1.com
127.0.0.1 school2.com
Затем вы можете получить доступ к своему приложению через веб-браузер, используя school1.com:3000 и school2.com:3000. (Вам нужно использовать порт 3000, так как это порт, который ваше приложение rails будет использовать по умолчанию).