我正在将 Apartment gem 用于多租户应用程序,并且正在使用“host_hash 电梯”根据请求的子域和主机切换租户。
这是通过以下代码(来自他们的文档)完成的:
#initalizers/apartment.rb
# application.rb
module MyApplication
class Application < Rails::Application
config.middleware.use 'Apartment::Elevators::HostHash', {'example.com' => 'example_tenant'}
end
end
在它显示“example.com”=>“example_tenant”的地方,我需要发送一个带有 request.host 的哈希,以在我的 Company 模型中找到 request_host 数据库字段的值与 request.host 匹配的公司。如果这有意义吗?
如果我在示例中硬编码,就像下面的代码一样,我可以让它工作,但我不知道如何根据请求动态地做到这一点:
#initalizers/apartment.rb
# application.rb
module MyApplication
class Application < Rails::Application
config.middleware.use 'Apartment::Elevators::HostHash', {'test.lvh.me:3000' => 'test.lvh.me:3000'}
end
end
上面的代码有效,因为这是我当前所在的域,它与我设置的字段和公寓租户匹配。
但是,由于这是在初始化程序中放置“request.host”时出现的错误:未定义的局部变量/方法“请求”
如果我使用 'Rack::Request.new(env).host' 我会得到未定义的局部变量/方法 'env'
如何在初始化程序中获取 request.host 来解决这个问题?