DEV Community

Cover image for Uncovering tiny little magic in Rails
Soo Yang, Tan
Soo Yang, Tan

Posted on

4 1

Uncovering tiny little magic in Rails

Recently I got really curious with one of the magical things in Ruby on Rails framework. Let's take a look at the following code:

class User < ActiveRecord::Base
  validates_presence_of :name
end

As a Rails developer, we understand that validates_presence_of :name helps us to easily perform a modal validation to ensure that the name attribute must be present. BUT wait a minute.. where does this come from?

The beauty of Rails is that the framework provides a bunch of methods we could conveniently use out-of-the-box to perform difficult things easily. Back to our example, we can find this magical method validates_presence_of being defined inside the rails sourcecode. This magic is just another class method.

You may be curious on how did I manage to find the method in the source code. A good starting point to look at the rails sourcecode would be under activerecord since our model inherits from ActiveRecord::Base.

This is quite a common pattern in the Rails world. Some other examples would be has_many, acts-as-taggable, has_paper_trail and etc.

You can easily implement this pattern in your project. All you have to do is to define a class method in your parent class. You sub class will be able to use the method right away. Below is a simple code sample to demonstrate on how you can write it yourself.

class Employee
  def self.onboarding_pack(department)
    # Insert any complex logic here. For simplicity, this sample only prints a sentence. 
    puts "Onboarding pack for #{department} employees"
  end
end

class Developer < Employee
  onboarding_pack "Developer"
end

class Clerk < Employee
  onboarding_pack "General"
end

puts Developer.new # Onboarding pack for Developer employees
puts Clerk.new # Onboarding pack for General employees

Takeaway

Alot of convenient things (methods, generators and etc) provided by Rails will seem like magic on the surface. If we stay curious and take a dive into the rails sourcecode, you will be able to uncover its magic.

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (2)

Collapse
 
panoscodes profile image
Panos Dalitsouris

Cool article 🎉 There is also a great talk on how to dive into rails core !!!

Collapse
 
sooyang profile image
Soo Yang, Tan

Thanks for the share. Great talk!

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay