Software Development

Ruby on 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.

by Jey Geethan

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
  end

  def matches?(request)
    @domains.include? request.domain
  end
end

Now you add the code to the routes.rb as following:


constraints DomainConstraint.new('mydomain.com') do
  root :to => 'mydomain#index'
end

The above code makes sure that the requests coming to a mydomain.com will have a root url at the mydomain controller and index action!


Happy Railing!



Related Articles

Top 4 Reasons Why You Should Participate in Hackathons

Software Development

Hackathons help to keep an active engineering culture alive. Learn here why you should participate and may be try to win them

by Jey Geethan

Why Microservices?

Software Development

I have a few tidbits about why to use microservices and why it makes sense to create few microservices as a side project and learn from the same

by Jey Geethan


Subscribe to my weekly newsletter
Subscribe to my weekly newsletter to receive emails on business, love, my books, poems and my other writings