Есть ли у кого-нибудь советы по управлению полиморфными вложенными ресурсами в Rails 3?

В config / routes.rb:

resources :posts do
  resources :comments
end

resources :pictures do
  resources :comments
end

я хотел бы также добавить больше комментариев.

В настоящее время я использую mongoid (mongomapper еще не так совместим с Rails 3, как мне хотелось бы), а комментарии - это встроенный ресурс (mongoid еще не может обрабатывать полиморфные реляционные ресурсы), Это означает, что мне действительно нужен родительский ресурс, чтобы найти комментарий.

Есть ли какие-нибудь изящные способы решения некоторых из следующих проблем:

В моем контроллере мне нужно найти родительский ресурс, прежде чем найти комментарий:

if params[:post_id]
  parent = Post.find(params[:post_id]
else if params[:picture_id]
  parent = Picture.find(params[:picture_id]
end

, который станет беспорядочным, если я начну добавлять больше вещей для комментариев.

Также url_for ([comment.parent, comment]) не работает, поэтому я ' m нужно будет что-то определить в моей модели Comment , но я думаю, что мне также нужно будет определить маршрут индекса в модели Comment , а также потенциально изменить и новое определение маршрута.

Возможно, мне придется столкнуться с другими проблемами по мере продвижения.

Не могу представить, что я первый, кто попытается решить эту проблему, есть ли какие-то решения чтобы сделать это более управляемым?

7
задан jvperrin 1 May 2015 в 00:16
поделиться