Skip to main content

route_constraints

🚧 Apply Custom Route Constraints for Dynamic Filtering​

Use constraint classes or lambdas to route requests based on subdomains, headers, or request attributes. This allows dynamic routing decisions without controller checks.

# lib/subdomain_constraint.rb
class SubdomainConstraint
def initialize(subdomain)
@subdomain = subdomain
end

def matches?(request)
request.subdomain == @subdomain
end
end

# config/routes.rb
Rails.application.routes.draw do
constraints SubdomainConstraint.new('api') do
namespace :api do
resources :orders
end
end

# Lambda example
get '/mobile', to: 'home#mobile', constraints: ->(req) { req.user_agent =~ /Mobile/ }
end