I provide Animal,Mammal and Cow controllers with the scaffolding, just
to test and to fill up the Animal table. I can see the “type” column
getting it’s value set with the class name.
So far, soo good.
Now, since listing Animals is showing all animals in the table
(including Mammals and Cows) i thought that listing Mammals would show
me all Mammals and Cows, but i see only recods marked “Mammal” in the
“type” column (and no Cows).
I understand that Rails doesn’t select descendants of a class when
listing it’s elements, and i understand it could be more practical that
way in most cases.
But how can i tell Rails to build the query including in the selection
also any descendants?
thanks,
Happy new year,
Marcus.
(sorry for my poor english)
I understand that Rails doesn’t select descendants of a class when
listing it’s elements, and i understand it could be more practical that
way in most cases.
But how can i tell Rails to build the query including in the selection
also any descendants?
Perhaps something like this would work Marcus.
(Completely untested, may not work.)
class Animal < ActiveRecord::Base
@@branch = “’#{self.class.to_s}’”
def self.add_descendent( klass )
@@branch.concat( “,’#{klass.to_s}’” )
super unless self.equal?(Animal)
end
end
Actually, Rails does select Mammals and Cows, but only if the
current Ruby interpreter knows about Cow (i.e., has loaded the Cow
class). The simplest workaround is to make sure that you reference
Cow before running your query.