【发布时间】:2010-12-20 23:45:15
【问题描述】:
我正在开发一个项目,其中我有一个可能有两种资产的实体:图片和视频,基本上。
由于我希望所有资产都在同一个表上,并且 图片 或 视频 都在一个上传表单上,所以我使用的是具有两者的单表继承 Picture 和 Video 来自 Asset 类。此外,我将根据是视频还是图片运行不同的验证/回调。
我正在使用回形针来处理上传过程,我的想法是在上传文件并使用它创建资产时,应用程序将实例化正确的子类(图片或视频)取决于上传文件的 MIME 类型。
这是我的课程草图:
class Project < ActiveRecord::Base
has_many :assets
accepts_nested_attributes_for :assets
end
class Asset < ActiveRecord::Base
belongs_to :project
has_uploaded_file :content, ...
end
class Picture < Asset
validate :image_size
...
end
class Video < Asset
after_save :convert_format
...
end
我的想法是在 Asset 类上实现一个before_save 回调并尝试在那里实例化正确的类,但我不确定如何去做,或者这是否是个好主意。
对此有什么想法吗?
【问题讨论】:
标签: ruby-on-rails paperclip nested-attributes sti