Skip to main content

Rails - Complex Route Constraints Made Easy

In Rails, we know that the routes are the most important entry-point where we define the which url hits which controller. We also know how to define the resources and add some conditions to the routing.

In this post, I want to concentrate about how to go about complex route conditions and make it easy for you to write modular code.

Let's say that you have to write a condition that if the domain belongs to a given domain, route the root url to some other controller. You can accomplish it using the following snippets:

Here you are creating a class for the domain constraint and having the required method called matches? which does the computing on the fly.

class DomainConstraint
  def initialize(domain)
    @domains = [domain].flatten

  def matches?(request)
    @domains.include? request.domain
Now you add the code to the routes.rb as following:

constraints'') do
  root :to => 'mydomain#index'
The above code makes sure that the requests coming to a will have a root url at the mydomain controller and index action!

Happy Railing!

Follow me on TwitterFacebookLinkedIn, Instagram or Website.



How to Get Color Prompts on your MacOS Terminal

Have you ever wondered that you would want colors to pop up on your terminal? I did and it made my life easier. It helped me to understand very quickly about the following:
Which folder im currently inWhich git branch my local workspace is inWhat terminal commands I have issued All you have to do is to use the following script in your ~/.bash_profile
Gist link:

You will receive wonderful short stories written by him and inspirational articles once every month.