aar*_*ell 5 ruby subdomain routing ruby-on-rails
我正在开发一个Rails应用程序,默认情况下会将用户帐户设置为他们选择的子域.作为一种选择,他们可以将自己的完整域名映射到他们的帐户.
到目前为止,这就是我设置的方式.我正在使用subdomain-fu来为路由提供支持:
# routes.rb
map.with_options :conditions => {:subdomain => true} do |app|
app.resources # User's application routes are all mapped here
end
map.with_options :conditions => {:subdomain => false} do |www|
www.resources # Public-facing sales website routes are mapped here
end
Run Code Online (Sandbox Code Playgroud)
before_filter :set_current_account
def set_current_account
if request.host.ends_with? current_domain
# via subdomain
@current_club = Club.find_by_subdomain(current_subdomain)
else
# via full domain
@current_club = Club.find_by_mapped_domain(request.host)
end
end
Run Code Online (Sandbox Code Playgroud)
我还没有完成构建它的过程,但我已经看到我将遇到路由问题.如果request.host是一些random.com域,那么subdomain-fu不会路由相应的路由?
我假设这不是一个不寻常的问题,所以任何人都可以分享他们如何处理这个问题,或者我如何配置我的路线来做我需要的东西?
我遇到了这个问题,试图在一个应用程序中做太多事情。你将开始在非常奇怪的地方做你不应该做的条件。我决定让 2 个独立的 Rails 应用程序具有指向用户应用程序的通配符域,然后具有www.domain.com和domain.com指向面向公众的一面。我知道这并不能直接“回答”你的问题。
如果您将其添加到该方法的顶部,我可以帮助您修复那里的小代码气味:
return @current_club if defined?(@current_club)
Run Code Online (Sandbox Code Playgroud)
它不会在您每次尝试访问时进行查询@current_club,它会返回您已经返回的结果。