Become a Rails Association Pro: Replicating has_many with Pure Ruby

Gokul
4 min readMay 6

Understanding the has_many Association

In Ruby on Rails, the has_many association is used to define a one-to-many relationship between two models. It allows us to easily access a collection of associated records for a particular record. This association is one of the most commonly used in Rails applications.

To understand how the has_many association works, let's consider an example of a blog application with two models: Post and Comment. Each post can have many comments, so we'll define a has_many association between them.

In the Post model, we'll add the following line of code:

class Post < ApplicationRecord
has_many :comments
end

This line of code tells Rails that a post has many comments associated with it. It also generates several methods that we can use to access and manipulate the associated comments:

  • comments: This method returns a collection of comments associated with the post.
  • comments.create: This method creates a new comment associated with the post.
  • comments.build: This method returns a new comment associated with the post (but does not save it to the database).
  • comments.destroy_all: This method destroys all comments associated with the post.

We can also define options for the has_many association. For example, we might want to order the comments by creation date:

class Post < ApplicationRecord
has_many :comments, -> { order(created_at: :desc) }
end

This will order the comments associated with a post in descending order of creation date.

In the Comment model, we'll add the following line of code:

class Comment < ApplicationRecord
belongs_to :post
end

This line of code tells Rails that a comment belongs to a post. It also generates several methods that we can use to access and manipulate the associated post:

  • post: This method returns the post associated with the comment.

We can also define options for the belongs_to association. For example, we might want to…

Gokul

Consultant | Freelancer | Ruby on Rails | ReactJS

Recommended from Medium

Lists

See more recommendations