我正在使用Apartment gem为多租户应用程序而我正在使用“host_hash elevator”根据请求的子域和主机切换租户。
这是通过以下代码(来自他们的文档)完成的:
#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'=&gt; 'example_tenant'我需要使用request.host发送一个哈希,以便在我的公司模型中找到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'放在初始化器中时,我得到一个错误:未定义的局部变量/方法'request'
如果我使用'Rack :: Request.new(env).host',我会得到未定义的局部变量/方法'env'
如何在初始化程序中获取request.host来解决此问题?
答案 0 :(得分:1)
感谢我对公寓gem的github问题的一些帮助,我能够找到解决方案。
<div> <h1> <span> anything </span> </h1> <h5> anything> </h5> </div>
<div> <h2> anything </h2> <h5> anything> </h5> </div>
<div> <h5> anything> <h2> anything </h2> </h5> </div>