У меня есть набор классов примерно так:
class Owner
has_one :animal
end
class Animal < AR::Base
TYPES = ['Lion','Cat']
# has a type field
belongs_to :owner
end
class Lion < Animal
def speak
'roar'
end
end
class Cat < Animal
def speak
'meow'
end
end
Так что у меня есть ассоциация с владельцами и животными, и у каждого животного есть свой тип. Все это работает, пока я не сделаю такой вызов:
owner.animal.speak
Это возвращает объект типа «Животное», а затем пытается вызвать метод «говорить», который не определен для родителя. Как заставить Rails возвращать соответствующий подкласс вместо родительского класса?