我有一个rails应用程序,用户可以共享特定类型的照片。目前,该应用要求照片在有效之前以多种方式进行分类,因此用户必须一次上传一张照片并对其进行分类,以便将其保存到数据库中。
分类需要一些时间,因此我希望允许用户上传批量照片,然后在有时间时返回并对其进行分类,但是当照片存储时没有完全分类,我不希望它们混合在一起“完整”的照片。
我理想情况下这是一种“向导”系统,用户可以一次上传一堆照片,然后通过个人队列进行处理,并在有时间的情况下对每张照片进行分类(完成创建)。
我的问题是:你会如何处理这样的问题?
我一直在考虑使用单表继承来创建Photo的两个子类:IncompletePhoto
和CompletePhoto
。 IncompletePhoto
只需要图像文件本身,但CompletePhoto
需要分类。用户可以查看自己的不完整照片,但应用程序内的搜索结果只会返回CompletePhotos。
这听起来像是我试图解决的问题的正确方法,还是有更好的方法?我之前从未使用过STI,我不确定它是不是一个好主意。
答案 0 :(得分:0)
我想说,如果你有不同的对象一些但不是所有的公共属性,那么创建STI是有用的,对于你会受益的情况来自DRY的数据库和模型。我不确定是否有办法正确更改此类模型的实例类型。好吧,您只需修改type
列本身,但对象的Ruby类将是相同的,因此将进行验证,除非您在保存后重新获取模型,然后手动运行验证。后者对我来说听起来像是一个肮脏的黑客。
作为一种正确的方法,我建议您添加complete
列,并使用validates ..., :if => :complete
形式的验证程序。