Полиморфная ассоциация с несколькими ассоциациями на одной и той же модели

StackOverflow https://stackoverflow.com/questions/1168047

Вопрос

Я немного сбит с толку возникшей у меня полиморфной ассоциацией.Мне нужна модель статьи, чтобы иметь изображение заголовка и много изображений, но я хочу иметь единую модель изображения.Чтобы еще больше запутать ситуацию, модель изображения является полиморфной (чтобы позволить другим ресурсам иметь много изображений).

Я использую эту ассоциацию в своей статье модель:

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 не сможет отличить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top