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? -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 3 May 2012 15:28, Mauro <mrsanna1-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 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. Jeremy Walker http://www.ihid.co.uk> > -- > 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 3 May 2012 16:41, Jeremy Walker <jez.walker-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > > On 3 May 2012 15:28, Mauro <mrsanna1-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 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. -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 3 May 2012 15:49, Mauro <mrsanna1-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On 3 May 2012 16:41, Jeremy Walker <jez.walker-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > On 3 May 2012 15:28, Mauro <mrsanna1-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.