У меня есть набор классов что-то вроде этого:Rails STI и Active Record находит
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
Это возвращает объект типа «Animal», а затем пытается вызвать метод «говорить», который является неопределенным для родителей. Как мне получить Rails для возврата соответствующего подкласса вместо родительского класса?
У вас есть столбец с именем «тип» в таблице животных? – Doguita
Вы уверены, что у данного вида животных есть тип? Вы проверяете наличие типа? – evanbikes
Rails должен инициализировать экземпляр правильного подкласса. http://api.rubyonrails.org/classes/ActiveRecord/Inheritance.html У вас есть свои модели правильно? – messanjah