【问题标题】:Multiple instances of nested uploaded files - need help on this design嵌套上传文件的多个实例 - 需要有关此设计的帮助
【发布时间】:2014-06-30 21:23:56
【问题描述】:

我一直在兜圈子。

我有一份工作,而这份工作有多个任务。每个任务有一个输入文件和一个输出文件。文件有一个模型。一个输入文件可以用于多个任务。每个任务都有一个输出文件。 (我使用 jQuery 上传文件。)

理想情况下,我想要一个 Job -> Task -> File 的嵌套关系,但是唯一的关系是每个任务一个输入文件和一个输出文件,所以逻辑上,如果模型中的 File_ids 和任务属于,任务有一对到每个文件,但是嵌套是向后的,并且没有任何标准表单关系起作用。

我已经查看了带有 has_one_through 和多态性的连接模型,但没有什么是完全一致的。在为多个任务提供服务的单个输入文件和在任务中的两个角色中引用的文件模型之间,我还没有想出一个明显的解决方案。

建议???

----------- 附录----------

我在很多事情上都使用 Cocoon,但在这里,在 Job 表单上,文件上传(使用 jQuery Upload)创建一个新文件并构建其父级任务,所有这些都在文件控制器的创建部分中,然后添加通过 javascript 将它们添加到表单中。

为了澄清,文件是任务的子任务,具有两个角色(输入或输出)之一。一个文件也可以是上面没有提到的其他几个模型的孩子。如果文件总是只有一个父级的子级,那么多态性将是一个很好的解决方案。导致问题的原因是,在一种情况下(任务的输入),一个文件可能充当多个父级(任务)的子级。正如 pixelearth 所指出的,这将需要是一个连接表。也许,因为“任务输入”是唯一的多重情况,我应该用一个连接(has_many :through)来实现这个,其余的使用多态性。我希望有一个单一的解决方案,没有大量的连接表或文件中的大量外键。

【问题讨论】:

  • 我不确定您想要达到的目标。但我知道Cocoon gem 在嵌套表单方面很棒。它也有一些很好的例子。还可以查看Railscastsnested_form 剧集以了解情况。但是茧宝石做得很好

标签: ruby-on-rails file model nested uploader


【解决方案1】:

如果您的输入文件可用于多个任务,那么您将需要一个连接模型(和表),并且您必须使用 has_one :through。如果输出文件也可以属于许多任务,则需要使用 has_many :through,或将两者定义为 has_one :(output|input)_file :through 和使用 :conditions 的构成类型的范围

如果连接模型可以涉及多个任务,那么就无法使用它们。一个文件不能只有一个 task_id,因为会有多个任务。如果它可以属于的任务数量有限制,那么您可以使用多个字段 task_1_id、task_2_id 等。但这将是可恶的。

【讨论】:

    猜你喜欢
    • 2013-12-06
    • 2023-02-24
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    相关资源
    最近更新 更多