STI good or bad for my problem?

Hi. I am currently developing a small course system for student and
teachers. The system is divided in sections and sections have many
messages, comments, documents and schedules. Pretty easy to set up
using ROR, just add some belongs_to and has_many relations. But
everything becomes much more complicated when the section items
(message, comment and so on…) all has comments. And they can also be
a favorite to a users favorite list and much more. Basically all the
items has some shared generic stuff that I just don’t want to copy
around. Let’s check my rest routes so everyone understands better:

map.resources :sections do |sections|
sections.resources :messages
sections.resources :documents
sections.resources :schedules

map.resources :items do |item|
item.resources :comments
item.resources :favorites

I would basically want to have a generic resource (Item) that takes
care of comments, favorites and so on. And that is what my question is
all about. Is it a good way to inherit from a base class called Items
using STI? Or could I solve this problem some other way? If I don’t
have a base class I would have to nest the comment resources to each
of the items and that’s not a good solution either.

STI seems not suitable, I would call that abuse, unless you have almost
everything common between yout different tables.

But you can use o polymorphic relation for comment, and extract the
behaviour in a plugin (something like acts_as_commentable)

Look here : hhttp://

Yes, I was almost thinking that my self. Thanks for clarifying that.
What I now is trying to do is to have a generic model called Item that
relates to the different items through a itemable interface
(belongs_to :itemable, polymorphic => true). And then the Item model
belongs to the Section. What do you think of that?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs