Okay the problem I am trying to get to grips with is how inheritence and data storage in a relational database can work... I can easily have a model inherit from other models and if the difference between the two models is fairly small STI works well... But once you start adding more and more functionality (well properties actually) STI becomes messy and you want to split the single table up in to multiple table keeping one table per model... What is the best way to tackle this? Lets say I have a base model called Animal which is supposed to have the properties, weight, age and health. I then create two new models called Bird and Insect. Bird has the property flying and Insect has the property bugging... Would I create two tables, with the full set of fields in, or is there a way in Rails to keep the common fields in one table and the additional fields in another table? (I guess not) BirdTBL id, weight, age, health, flying InsectTBL id, weight, age, health, bugging [For the sake of this example please imagine there are loads of other animals each that extends the Animals class, so STI would not be useful..] -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Kris wrote:> Okay the problem I am trying to get to grips with is how inheritence and > data storage in a relational database can work... > > I can easily have a model inherit from other models and if the > difference between the two models is fairly small STI works well... But > once you start adding more and more functionality (well properties > actually) STI becomes messy and you want to split the single table up in > to multiple table keeping one table per model... > > What is the best way to tackle this?Take a look at Class table inheritance http://www.martinfowler.com/eaaCatalog/classTableInheritance.html. If this concept suits you, you can give class table inheritance plugin a try at http://rubyforge.org/projects/clti/. Disclaimer: I''m its author. -- Sava Chankov --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Sava Chankov wrote:> Kris wrote:<SNIP>>> >> What is the best way to tackle this? > > Take a look at Class table inheritance > http://www.martinfowler.com/eaaCatalog/classTableInheritance.html. If > this > concept suits you, you can give class table inheritance plugin a try at > http://rubyforge.org/projects/clti/. Disclaimer: I''m its author. > > -- > Sava ChankovThanks Sava, thats the word I needed, CTI. Ive had a good google and I have found quite a few discussion and implementations but nothing stable or that does not remove certain ActiveRecord features... I guess its either put up or contribute code :) -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Guest wrote:> Sava Chankov wrote: >> Kris wrote: > <SNIP> >>> What is the best way to tackle this? >> Take a look at Class table inheritance >> http://www.martinfowler.com/eaaCatalog/classTableInheritance.html. If >> this >> concept suits you, you can give class table inheritance plugin a try at >> http://rubyforge.org/projects/clti/. Disclaimer: I''m its author. >> >> -- >> Sava Chankov > > Thanks Sava, thats the word I needed, CTI. Ive had a good google and I > have found quite a few discussion and implementations but nothing stable > or that does not remove certain ActiveRecord features... >My implementation hopefully does not remove any ActiveRecord feature. It has some unit tests, but test coverage is far from complete - I''d like to add all inheritance tests from ActiveRecord. The plugin also has not been performance tested. -- Sava Chankov --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---