如何根据子域数组约束Rails路由?

时间:2015-12-02 19:00:03

标签: ruby-on-rails

我有一个Rails 4.2应用程序,其中包含一组约束到子域的路由。

constraints subdomain: 'admin' do
  # ...
end

但是,我不确定如何指定多个子域(adminadmin.staging)。如何指定多个子域?

2 个答案:

答案 0 :(得分:6)

即使没有记录,您也可以传递一个子域数组:

constraints subdomain: ['admin', 'admin.staging'] do
  # ...
end

答案 1 :(得分:5)

您可以使用正则表达式,例如:

constraints subdomain: /^admin|admin\.staging$/ do
  # ...
end

...或...

constraints subdomain: /^admin(\.staging)?$/ do
  # ...
end

您也可以使用lambda:

constraints subdomain: ->(req) { %w[ admin admin.staging ].include?(req.subdomain) } do
  # ...
end

您可以在此处阅读constraints的文档:http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Scoping.html#method-i-constraints