унаследованный ресурс принадлежит к полиморфным проблемам - PullRequest
0 голосов
/ 18 февраля 2012

Поэтому у меня возникают проблемы с выяснением того, что происходит с полиморфными ассоциативными / унаследованными ресурсами, и документация сбивает меня с толку, так как я не знаю точно, что это означает - в документации говорится:

В настоящее время унаследованные ресурсы ограничены и не позволяют иметь две вложенные полиморфные ассоциации.

Но этот пример продолжается.

Вы даже можете использовать его с вложенными ресурсами:

  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?, В представлениях моего проекта, которые мне нужно использовать, чтобы определить, является ли ресурс проектом или задачей, чтобы я мог вызвать правильные параметры в частичной форме (потому что у меня есть форма комментария проекта в одной вкладке, а затем вкладка для задач, в которую загружается ajax с формой для комментирования этой задачи) -

Так что мне интересно, является ли то, что я делаю выше, именно тем ограничением, на которое ссылается документация (но дело в том, что когда я вкладываю его, как описано выше, тогда я могу публиковать комментарии как для проектов, так и для задач, если Тогда я не могу найти ошибку полиморфной ассоциации, поэтому кажется, что это своего рода работа, за исключением отсутствующих методов), и если это неправильный способ вложить эту настройку, если у кого-то есть какие-либо творческие идеи обходного пути.

1 Ответ

0 голосов
/ 18 февраля 2012

В документации говорится, что вам нужно указать каждый тип ресурса, который вы хотите использовать в этом вложенном случае.В этом примере, в зависимости от выбранного вами маршрута, вложенный объект будет использовать задачи, файлы или сообщения проекта.

В вашем примере кода вы используете только один ресурс для каждой вложенности, поэтому я 'я не уверен, что вы пытаетесь достичь с помощью полиморфного => true.

...