On 3 May 2012 15:49, Mauro <mrsan...@gmail.com> wrote:

> On 3 May 2012 16:41, Jeremy Walker <jez.wal...@gmail.com> wrote:
> >
> >
> > On 3 May 2012 15:28, Mauro <mrsan...@gmail.com> wrote:
> >>
> >> Hello.
> >> I've read about examples on inheritance with rails.
> >> Here is an example:
> >>
> >>
> >>
> http://juixe.com/techknow/index.php/2006/06/03/rails-single-table-inheritance/
> >>
> >> The way is to add a type field in the table.
> >> So if I have an Animal class with an attribute name, I can inherit
> >> from this class like:
> >>
> >> Dog < Animal, Cat < Animal, and so on.
> >>
> >> With the type field in the table I can do Dog.all, Cat.all having
> >> automaticaly all dogs, all cats, etc.
> >> But what if I want to add some other attributes to Dog or Cat classes?
> >> In the example above all classes have only name attribute.
> >> What if I want inherit from Animal extending attributes and adding,
> >> for example, an attribute like canFly? for inherited classes?
> >
> >
> > Hi,
> >
> > You can add columns to the animals table that only some classes use. IMHO
> > this is not a nice solution.
> >
> > I have written the SuperSTI gem that I think offers a nicer solution.
> Read
> > about it at
> > http://www.ihid.co.uk/projects/super_sti and
> https://github.com/ihid/super_sti
> >
> > Feel free to email me personally to discuss it further.
>
> It creates a table for every inherited class.
> So in my example I must have a table animals, a table dogs and a table
> cats.
> It's the same if I create different models: Animal, Dog, Cat without
> using inheritance.


No, it creates an animals table, and then creates extra linked tables for
any extra attributes. So you'd create an animals table with all the shared
attributes, then a dogs table that only has the extra attributes on there.
So you don't have any duplication, and don't have a load of nullable
columns on a super table.

-- 
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@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to