Полиморфная ассоциация с несколькими ассоциациями на одной и той же модели
-
19-09-2019 - |
Вопрос
Я немного сбит с толку возникшей у меня полиморфной ассоциацией.Мне нужна модель статьи, чтобы иметь изображение заголовка и много изображений, но я хочу иметь единую модель изображения.Чтобы еще больше запутать ситуацию, модель изображения является полиморфной (чтобы позволить другим ресурсам иметь много изображений).
Я использую эту ассоциацию в своей статье модель:
class Article < ActiveRecord::Base
has_one :header_image, :as => :imageable
has_many :images, :as => :imageable
end
Возможно ли это?Спасибо.
Решение
Ага.Это вполне возможно.
Возможно, вам потребуется указать имя класса для header_image
, поскольку это не может быть выведено.Включать в себя :dependent => :destroy
также, чтобы гарантировать, что изображения будут уничтожены, если статья будет удалена
class Article < ActiveRecord::Base
has_one :header_image, :as => :imageable, :class_name => 'Image', :dependent => :destroy
has_many :images, :as => :imageable, :dependent => :destroy
end
затем на другом конце провода...
class Image < ActiveRecord::Base
belongs_to :imageable, :polymorphic => true
end
Другие советы
Я попробовал это, но затем header_image возвращает одно из изображений.Просто потому, что в таблице images не указан другой тип использования изображения (header_image противобычное изображение).Это просто говорит:imageable_type = Изображение для обоих применений.Таким образом, если нет сохраненной информации о типе использования, ActiveRecord не сможет отличить.