我有一个引文课程,我希望每个引文都有很多资源。资源可以是 LocalFile、Link(也可能是 Dropbox 文件)。资源将共享大多数功能和列。我想以下列方式使用单表继承。
class Resource < ActiveRecord::Base
belongs_to :citation
acts_as_list :scope => :citation
end
class LocalFile < Resource
end
class Link < Resource
end
class Citation < ActiveRecord::Base
has_many :resources, class_name: "Resource"
end
我希望能够使用类似的代码获取资源集合
cites = mycite.citations
并让 cites 中的每个对象都具有适当的类型(LocalFile、Link 等)。这行得通吗?奇怪的是,尽管进行了广泛的搜索,但我仍然无法找到这个简单问题的答案。
此外,acts_as_list 添加的方法在对各种子类型的对象调用时是否正常工作,即,在所有资源的列表中向上或向下移动它们以进行单个引用
或者,有没有更好的方法来做到这一点?我想让 Citation 类拥有多个子类型的资源集合。从概念上讲,每种资源类型都能够表示以不同方式访问的相同内容。