2012-05-15 5 views
0

Мне нужно создать галерею, содержащую записи из двух разных моделей/таблиц, скажем, «видео» и «изображение». Каков наилучший способ справиться с этим? Я хотел бы держать их в разных таблицах, но извлекать их вместе (например, последние 50 изображений и видео). Единственное наследование таблицы, похоже, не подходит. Есть идеи?Запросить несколько моделей Rails

ответ

1

Полиморфизм - ваш друг.

class Video 
    belongs_to :viewable, :polymorphic => true 
end 

class Image 
    belongs_to :viewable, :polymorphic => true 
end 

class Gallery 
    has_many :media, :as => :viewable 
end 
+0

Это будет работать, спасибо! –

0

Лучший способ, которым я смог понять, - иметь таблицу всех дисплеев с полиморфными ссылками на другие таблицы.

class Gallery 
    has_many :displays 
end 

class Display 
    belongs_to :gallery 
    belongs_to :derived_display, :polymorphic => true 
end 

class Video 
    has_one :display, :as => :derived_display 
end