I have three models in Rails as : Curriculum, Grade and Topics.
The relationship scenario is like :
Curriculum ‘International Baccalaureate(IB)’ in grade ‘6’ has_many Topics ( t1,t2,t3 and CompareFraction)
Curriculum ‘CBSE’ in grade ‘5’ has_many Topics (t1,t2,t4,t5 and CompareFraction) [ A Topic ‘Compare Fraction’ will be taught in many different curriculums but maybe in different grades ]
A Grade, say 5 will itself be a part of all Curriculums like IB,CBSE.
I need to store information such that for a Topic Compare Fraction, I can say:
It is taught in IB in grade 5
It is taught in CBSE in grade 4.
How can I set this up in Rails?
You have not given us enough information.
I have no idea what a Grade object is. What are the fields of a grade object?
Grade is anything like 4,5 or say HighSchool with a ‘name’ and ‘description’ attribute.
Grade is anything like 4,5 or say HighSchool with a 'name' and 'description'
Please don't top post, it makes it difficult to follow the thread. Thanks.
So a curriculum has many grades and a grade has many curriculums.
A topic is associated with a set of grade/curriculum combinations.
I think the solution is a join table (you will have to think of a good
name for it), I will say c_g_ts to save typing here. So:
Curriculum has_many c_g_ts and has_many topics through c_g_t and
has_many grades through c_g_t
Grade has_many c_g_ts and has_many curriculums through c_g_t and
has_many topics through c_g_t
Topic has_many ...
CGT belongs_to Curriculum and Grade and Topic.
Does that sound as if it will do the job?
Apologies for Top Posting.
The solution looks great. Thanks Colin! I was aware of has_many through but did not know I could apply it here for three models.