How do i model this in Rails? (put down java equivalent design)

Hello guys,

Need help!! Finding it hard to model the 'model' :stuck_out_tongue: within the given
rails associations.

In java terms, my requirements are...

There are 3 entities - module, chapter and activity.

Chapter entity is a specilization of Module entity (inheritence)
Activity entity is a specialization of Module entity (inheritence)
And the tables would have looked like:
1. Module table = Module_Id, Entity_type, ....
2. Chapter = Chapter_id, .....
3. Activity = Activity_id, ......

Hence, if I create a chapter then the tables would be populated as:
Module table = Module_Id, Entity_type, .... = values ( 100,
chapter , .... )
Chapter table = chapter_id, ..... = values ( 100, .... )
Basically, the ids of chapter and module would be same and module
table would store the type.

Now, if I create a activity then the tables would be populated as:
Module table = Module_Id, Entity_type, .... = values ( 101,
activity , .... )
Activity table = activity_id, ..... = values ( 100, .... )
Basically, the ids of activity and module would be same and module
table would store the type.

Can you please guide me how I can model it similarly in rails 2.3.2?

Thanks in advance
Ritvvij Parrilkh

Hello guys,

Need help!! Finding it hard to model the 'model' :stuck_out_tongue: within the given
rails associations.

In java terms, my requirements are...

There are 3 entities - module, chapter and activity.

Chapter entity is a specilization of Module entity (inheritence)
Activity entity is a specialization of Module entity (inheritence)
And the tables would have looked like:
1. Module table = Module_Id, Entity_type, ....
2. Chapter = Chapter_id, .....
3. Activity = Activity_id, ......

Hence, if I create a chapter then the tables would be populated as:
Module table = Module_Id, Entity_type, .... = values ( 100,
chapter , .... )
Chapter table = chapter_id, ..... = values ( 100, .... )
Basically, the ids of chapter and module would be same and module
table would store the type.

That wouldn't be the rails way of doing it. In rails you'd probably
either use single table inheritance or a polymorphic association.

Fred

Does seem to be a bit of repetition in your description but it seems
straightforward.

You have a Module which has an Entity_type column

Each Module has many Chapters where Chapters has a column named
module_id.

Each Chapter has many Activities with similar foreign key constraints
or
You have one Activities table, in which case you don't specify a
relationship.

Once you set up the has_many and belongs_to pairs, Rails provides the
methods to interact with the data.

Checkout some ActiveRecord tutorials like this screencast -
http://www.railsenvy.com/2007/8/8/activerecord-tutorial

I'd also chime in that if you create a model named 'Module', Rails
will most likely break in really interesting ways, as Module is a
reserved word in Ruby...

--Matt Jones