0

我有三个模型及其对应的表和控制器:

  • 要求
  • 直接补丁
  • UTPFiberPatch

用户创建新请求并定义请求类型:直接或 UTP/光纤

一旦用户点击保存,请求将被保存,用户将被重定向到编辑屏幕以创建与该请求对应的所有补丁条目。

  • 根据所选请求的类型,每个补丁条目将在 Direct 或 UTP 表中保存为单行。名为 request_id 的列将充当外键。
  • Direct 和 UTP/Fiber 的视图和形式将有所不同。
  • 用户可以在单个主页上查看所有请求并单击以进行编辑。然后,用户可以在单个页面上查看该请求的所有补丁行,然后单击以编辑现有的或添加新的。

    1. 为此设置路由、控制器和视图的最佳方法是什么?
    2. 创建新补丁时如何传递请求 ID 并自动保存?

我不确定我遇到的问题的确切技术名称是什么,但如果需要,我很乐意添加更多细节并回答问题。

4

1 回答 1

0

您可以在请求模型上使用多态关联:

belongs_to :patch, :polymorphic => true

将两列添加到您的请求表中:

patch_id : integer
patch_type : string

当您创建请求并且用户选择补丁类型时,您将此补丁对象分配给您的请求,这将填充两个新列。从您请求模型中,您可以调用

request.patch

这将根据存储在数据库中的详细信息为您返回适当类型的补丁(注意 - 您不能使用多态关联进行预加载)。

要执行视图,您可以根据补丁的类型在编辑屏幕中渲染部分。

于 2012-10-02T23:12:54.427 回答