我正在开发一个项目,我有一个实体,它可能有两种资产:基本上是图片和视频。
由于我希望所有资产都在同一张表上,并且为Pictures或Videos提供一个上传表单,因此我使用的是 Single Table Inheritance,其中Picture和Video都从Asset类下降。此外,我将运行不同的验证/回调,具体取决于它是视频还是图片。
我正在使用回形针来处理上传过程,我的想法是在上传文件并使用它创建资产时,应用程序将根据上传文件的 mime 类型实例化正确的子类( Picture或Video ) .
这是我的课程的草图:
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
回调并尝试在那里实例化正确的类,但我不知道该怎么做或者这是否是个好主意。
对此有任何想法吗?