У меня есть следующее:
- Ссылка на модель
- модель LinkItem, которой я хочу быть следующего типа
Я использую этот код:
Ссылка модель
class Link < ActiveRecord::Base
has_many :link_items
end
Модель LinkItem
class LinkItem < ActiveRecord::Base
belongs_to :link
end
class Comment < LinkItem
end
class Tag < LinkItem
end
Теперь я не знаю, как сказать Rails, что моя модель LinkItem должна быть полиморфной. Я читал Руководство по Rails по ассоциациям и другим учебным пособиям, но они просто описывают, как создать ассоциативную принадлежность для нескольких других моделей, а не наоборот.
Так что мой вопрос будет:
Как создать ассоциацию has_many, в которой связанные экземпляры могут быть разных типов? Или было бы лучше создать отдельные модели для комментариев, тегов и т. Д. И просто связать каждую из них по отдельности с моей моделью Link?
EDIT
На самом деле мой код работает.
Я просто попытался использовать столбец «type» (вместо «link_item_type») в моей базе данных, и rails автоматически использовал его для сохранения / определения правильного подкласса моих LinkItems (спасибо Wizard of Ogz за подсказку)
Однако я все еще не могу получить доступ к подклассам LinkItem без предварительной ссылки на LinkItem. Это какая-то ленивая загрузка?