Мне нужно создать галерею, содержащую записи из двух разных моделей/таблиц, скажем, «видео» и «изображение». Каков наилучший способ справиться с этим? Я хотел бы держать их в разных таблицах, но извлекать их вместе (например, последние 50 изображений и видео). Единственное наследование таблицы, похоже, не подходит. Есть идеи?Запросить несколько моделей Rails
0
A
ответ
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
Лучший способ, которым я смог понять, - иметь таблицу всех дисплеев с полиморфными ссылками на другие таблицы.
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
Это будет работать, спасибо! –