When programming in Rails, there is numerous relationships to learn. One of the most common is the Many-To-Many relationship. There's no question if you program in Rails, this is a association you must know. A Many-to-Many relationship consist of utilizing the
has_many :through macro. For this to work correctly, you will need two models and a join model. In our example models, we will use
Sorting_hat as our join.
#For less confusion involving our model classes #The Syntax for inheriting Application Record is: class Class_name_here < ApplicationRecord end
Our Many-to-Many relationship goes something like this BELOW:
class Student < ApplicationRecord has_many :sorting_hats has_many :houses, through: :sorting_hats end class Sorting_hat < ApplicationRecord #JOIN MODEL belongs_to :house belongs_to :student end class House < ApplicationRecord has_many :sorting_hats has_many :students, through: :sorting_hats end
Although there's only one sorting hat in the world of Harry Potter. For our example today, there's a sorting hat for each individual student. Our join table will always
belong_to our other models individually (singular).
You can think of our join table as the bridge between the other two models. The only way for our
Student models to interact is
through the sorting_hats join model. Without our join model, there's no connection between our
Student associations. In other words, Each Student(singular) goes through the Sorting Hats and is assigned a House. Once each Students travel through the sorting hats, you are then assigned to be apart one the amazing Hogwart Houses! Gryffindor, Hufflepuff, Ravenclaw, and.... Slytherin.
Sorting_hat model is the join model in this instance. Lets establish each relationship here below more clearly.
Studenthas many sorting_hats and many houses through sorting_hats.
Househas many sorting_hats and many students through sorting_hats.
Sorting_hatbelongs_to student (each individual student) and belongs_to House (each individual house).
Associations in ruby on rails can be very confusing. Next time you come across a bump in the road, think of a real life scenario associations can be compared to. I promise It will shed light on how simple associations can really be. For example, If you are given a set of models. These models are Doctor, Patient, and Appointments. The Doctor and Patients cannot interact without any Appointments. Which means Appointments will be our JOIN model. The JOIN model creates the Many-to-Many relationship. That is one example to think of Many-to-Many relationships. Come up with examples yourself to make things a bit more clear. Draw these relationships down on paper or create diagrams.
I hope this helped you get a better understanding about Many-To-Many Associations in rails. Happy Coding Everyone!