0

我需要创建一个包含来自两个不同模型/表的条目的画廊,比如说“视频”和“图像”。处理这个问题的最佳方法是什么?我想将它们保存在不同的表中,但将它们一起检索(例如,最近的 50 张图像和视频)。单表继承似乎不适合。有任何想法吗?

4

2 回答 2

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
于 2012-05-15T18:35:09.650 回答
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
于 2012-05-15T18:34:54.813 回答