Hello.
I’ve read about examples on inheritance with rails.
Here is an example:
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?
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.
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.
But what if I want to add some other attributes to Dog or Cat classes?
I have written the SuperSTI gem that I think offers a nicer solution.
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.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.