Ruby on Rails:子域和自定义域的路由可能吗?

时间:2013-03-27 14:55:23

标签: ruby-on-rails ruby routes

我希望从他们的子域以及他们的自定义域中路由用户的页面。例如,考虑三个域:

app.com
user1.app.com
user1.com

访问者应该能够在应用程序域(user1.app.com)的子域以及用户的自定义域(user1.com)中查看用户的页面。也就是说,访问者将在访问“app.com”的任何子域或非“app.com”的根域时访问用户页面。

我如何设置路线?

也许这个伪代码的内容:

match "/", :to => "user_page#show", :constraints => { :subdomain => /.+/ OR :domain => NOT(app.com) }

您怎么看?

1 个答案:

答案 0 :(得分:7)

使用a constraint utility class or module

module DomainConstraint
  def self.matches? request
    request.subdomain.present? || request.domain != 'app.com'
  end
end

constraints DomainConstraint do
  # routing here
end

如果您的约束仅适用于一条路线,您可以这样做:

resources :foo, constraints: DomainConstraint

注意:您的实用工具类也可以替换为简单的lambda(请参阅“动态请求匹配”)