Lets say I have a model named Animal
with attribute species
.
I intend to subclass Tiger
from Animal
, which attribute species
is "tiger", how to define it so that
Animal.where(:species => 'tiger').where(:age => 12)
can be written as
Tiger.where(:age => 12)
?
My attempted solution:
class Tiger < Animal
def self.inherited(child)
child.instance_eval do
def type
"tiger"
end
end
super
end
end
References: 1. http://eewang.github.io/blog/2013/03/12/how-and-when-to-use-single-table-inheritance-in-rails/ 2. http://www.alexreisner.com/code/single-table-inheritance-in-rails