【问题标题】:Rails: Progressive Validation, use STI or something different?Rails:渐进式验证,使用 STI 还是其他方式?
【发布时间】:2011-10-17 02:50:30
【问题描述】:

我有一个 Rails 应用程序,用户可以在其中分享特定类型的照片。目前,该应用要求照片在有效之前进行多种分类,因此用户必须一次上传一张照片并对其进行分类,以便将它们保存到数据库中。

分类需要一些时间,所以我希望允许用户上传批量照片,然后在他们有时间的时候回来进行分类,但是当照片没有完全分类存储时,我不希望它们混在一起带有“完整”的照片。

理想情况下,我希望这是一种“向导”系统,用户可以在其中一次上传一堆照片,然后在他们有时间时通过他们的个人队列对每张照片进行分类(以完成创建)。

我的问题是:你会如何处理这样的问题?

我一直在考虑使用单表继承来创建 Photo 的两个子类:IncompletePhotoCompletePhotoIncompletePhoto 只需要图像文件本身,但CompletePhoto 需要分类。用户可以查看自己的 IncompletePhotos,但应用内的搜索结果只会返回 CompletePhotos。

这听起来像是解决我要解决的问题的正确方法,还是有更好的方法?我以前从未使用过 STI,我不确定这是否是个好主意。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 validation wizard single-table-inheritance


    【解决方案1】:

    我想说的是,当您拥有 不同 具有 一些但不是全部 通用属性的对象时,STI 的创建很有用,在您将受益的情况下来自数据库和模型中的 DRY。我不确定是否有办法正确更改此类模型的实例类型。好吧,您可以只修改 type 列本身,但对象的 Ruby 类将是相同的,验证也是如此,除非您在保存后重新获取模型然后手动运行验证。后者对我来说听起来像是一个肮脏的黑客。

    作为正确的方法,我建议您添加complete 列,并使用validates ..., :if => :complete 形式的验证器。

    【讨论】:

    • 谢谢,这是有道理的,也是我决定的方向。
    猜你喜欢
    • 2018-07-29
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多