У меня есть мультитенантное приложение, созданное с помощью Apartment gem и Devise.
Я хочу, чтобы URL-адреса с поддоменом могли иметь доступ к /users/sign_in
при возврате 404, если к нему обращались в корневом домене.
Это должно быть действительно:
http://subdomain.lvh.me:3000/users/sign_in
Это не должно быть:
http://lvh.me:3000/users/sign_in
В моем rout.rb :
require 'root_domain_constraint'
Rails.application.routes.draw do
constraints RootDomainConstraint do
root 'pages#guest_landing'
end
devise_for :users
root 'pages#tenant_landing'
end
В моем root_domain_constraint.rb :
class RootDomainConstraint
def self.matches? request
subdomains = ['www']
request.subdomain.blank? || subdomains.include?(request.subdomain)
end
end
Эта текущая настройка позволяет пользователю входить в систему как с субдомена, так и без субдомена (корневой домен).
ЕслиЯ перемещаю devise :users
внутри constraints RootDomainConstraint
блока.Это позволит войти в корневой домен, а не в поддомен.Но я хочу по-другому.
Гостевая посадка и посадка арендатора работает просто отлично.Я считаю, что я что-то упустил.