继承资源belongs_to&多态性的麻烦

时间:2012-02-18 18:15:45

标签: ruby-on-rails ruby polymorphic-associations inherited-resources

因此,我无法弄清楚多态关联/继承资源的情况,而且文档让我感到困惑,因为我不知道它究竟是什么意思 - 在文档中说明:

目前,Inherited Resources是有限的,不允许嵌套两个多态关联。

但它继续展示这个例子。

您甚至可以将它与嵌套资源一起使用:

  class CommentsController < InheritedResources::Base
    belongs_to :project do
      belongs_to :task, :file, :message, :polymorphic => true
    end
  end

- 我的代码类似,但基本上,我需要项目是可评论的,以及嵌套在项目下面的任务。 - 但是如果我执行以下操作,上面的代码只会半成品:

  class CommentsController < InheritedResources::Base

    belongs_to :project, :polymorphic => true do
      belongs_to :task, :polymorphic => true
    end

  end

但是,当我执行上述操作时,我仍然在我的项目视图中丢失像parent这样的方法,我需要使用它来确定资源是项目还是任务,以便我可以调用在部分形式中更正params(因为我在一个选项卡中有项目注释表单,然后是任务的选项卡,这是用表单来加载ajax以评论该任务) -

所以我想知道我上面做的是否正是文档所指的限制,(但事情是,当我像上面那样嵌套时,我就可以发布项目和任务的注释,如果我不知道我找不到多态关联错误,所以它似乎有点工作,减去缺少的方法),如果这不是嵌套这个设置的正确方法,如果有人有任何创造性的解决方法的想法。

1 个答案:

答案 0 :(得分:0)

文档说的是,您需要指定要在该嵌套情况下使用的每种类型的资源。在该示例中,根据您点击的路线,嵌套对象使用项目的任务,文件或消息。

在您的代码示例中,您只为每个嵌套使用单个资源,因此我不确定您尝试使用polymorphic =&gt;真。