2012-01-27 4 views
0

У меня есть сценарий, когда у меня есть модель страницы, каждая страница может быть типа 1. Предположим, что страница может быть типа видео или изображений и многих других типов. Поскольку у видео и изображения есть свои собственные модели, я хочу сделать эту страницу полиморфной. Возможно ли это в рельсах?Ассоциация полиморфизмов для нескольких моделей

class Page < ActiveRecord::Base 
    belongs_to :pageable, :polymorphic => true 
end 

class Video < ActiveRecord::Base 
    has_one :page, :as => :pageable, :class_name => 'Video' 
end 

class Image < ActiveRecord::Base 
    has_one :page, :as => :pageable, :class_name => 'Image' 
end 

Действительно ли это? Мое требование состоит в том, что во время создания страницы необходимо выбрать один из типов, а затем выбрать его вперед для видео или формы изображения.

ответ

0

Его действительный. Это и есть полиморфная ассоциация. Вам не нужно «:class_name => 'Video', но вы можете смело отказаться от него.

+0

спасибо Swanand, но в моем сценарии страница принадлежит видео или изображению, в основном в полиморфной ассоциации полиморфный объект принадлежит другим, например, Post или Article имеет комментарии, в этом случае комментарий является полиморфным. Мой выше фрагмент также предполагает, что страница принадлежит изображениям или видео, но по-другому. Я просто хочу спросить, что приведенный выше фрагмент будет работать для моего сценария или нет? «Если это не будет, то какие изменения мне нужно сделать для этого. –

Смежные вопросы