I''m trying to find a solution to this modeling problem I''m having in Rails, mainly because of the lack of support for ClassTI in Rails. I''m building a highly complex CMS which will be handling different types of content groups (objects) which each have their own unique set of attributes. For example: class Product < ActiveRecord::Base; end class Game < Product; end; class Movie < Product; end; class Car < Product; end; Normally this can be handled fine by STI but each model has a very unique set of attributes. product attributes: - id - title - description - created_on - updated_on game attributes: - id - title [inherited] - description [inherited] - esrb_rating_id - game_platform_id - created_on [inherited] - updated_on [inherited] movie attributes: - id - title [inherited] - description [inherited] - mpaa_rating_id - production_studio_id - created_on [inherited] - updated_on [inherited] car attributes: - id - title [inherited] - description [inherited] - mpg_city - mpg_highway - created_on [inherited] - updated_on [inherited] Can anyone suggest a good solution for me that will allow me to still keep a DRY environment? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
The first thing that pops into my head as I''m getting ready to walk out the door is: Create an extra table for each of those sub-types that will use a has_one, belongs_to type of relationship with the STI table, keeping only the extra attributes that are specialized in the extra tables. In the end, you''d end up with something like c = Car.find(id) c.title == ''Blah'' c.car_attributes.mpg_city == 24 It seems a little less than perfect, but it''s the only thing I can think of in 3 minutes that will work. On 2/23/07, Rick M. <rick.martinez-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > > I''m trying to find a solution to this modeling problem I''m having in > Rails, mainly because of the lack of support for ClassTI in Rails. > > I''m building a highly complex CMS which will be handling different > types of content groups (objects) which each have their own unique set > of attributes. For example: > > class Product < ActiveRecord::Base; end > > class Game < Product; end; > class Movie < Product; end; > class Car < Product; end; > > Normally this can be handled fine by STI but each model has a very > unique set of attributes. > > product attributes: > - id > - title > - description > - created_on > - updated_on > > game attributes: > - id > - title [inherited] > - description [inherited] > - esrb_rating_id > - game_platform_id > - created_on [inherited] > - updated_on [inherited] > > movie attributes: > - id > - title [inherited] > - description [inherited] > - mpaa_rating_id > - production_studio_id > - created_on [inherited] > - updated_on [inherited] > > car attributes: > - id > - title [inherited] > - description [inherited] > - mpg_city > - mpg_highway > - created_on [inherited] > - updated_on [inherited] > > Can anyone suggest a good solution for me that will allow me to still > keep a DRY environment? > > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Rick M. wrote:> I''m trying to find a solution to this modeling problem I''m having in > Rails, mainly because of the lack of support for ClassTI in Rails. > > I''m building a highly complex CMS which will be handling different > types of content groups (objects) which each have their own unique set > of attributes. For example: > > class Product < ActiveRecord::Base; end > > class Game < Product; end; > class Movie < Product; end; > class Car < Product; end; > > Normally this can be handled fine by STI but each model has a very > unique set of attributes. > > product attributes: > - id > - title > - description > - created_on > - updated_on > > game attributes: > - id > - title [inherited] > - description [inherited] > - esrb_rating_id > - game_platform_id > - created_on [inherited] > - updated_on [inherited] > > movie attributes: > - id > - title [inherited] > - description [inherited] > - mpaa_rating_id > - production_studio_id > - created_on [inherited] > - updated_on [inherited] > > car attributes: > - id > - title [inherited] > - description [inherited] > - mpg_city > - mpg_highway > - created_on [inherited] > - updated_on [inherited] > > Can anyone suggest a good solution for me that will allow me to still > keep a DRY environment?Yes. Switch to PostgreSQL and use Class Table Inheritance plugin from svn://rubyforge.org/var/svn/clti/ -- Sava Chankov ClTI plugin author --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---