У моего приложения есть фотомодель. Эти фотографии могут принадлежать нескольким другим классам, например тема, пользователь, тег. Я хотел бы иметь возможность запрашивать все фотографии на основе разных связанных идентификаторов. Я настроил вложенные ресурсы, такие как:Лучшая практика Rails: обработка нескольких отношений в одном контроллере
resources :topics do
resources :photos, only: ['index']
end
...
resources :users do
resources :photos, only: ['index']
end
мне интересно, что лучшая практика для обработки этого в контроллере. Моя первоначальная реакция заключается в том, чтобы написать блок if/else, но это очень не рубино.
if !params[:user_id].nil?
# query based on user id
elsif !params[:topic_id].nil?
# query based on topic id
etc.
Я также обсудили создание действий контроллера и маршрутизации к тем, как user_photos # фото, topic_photos # фото.
Или настройки некоторых новых контроллеров: UserPhotosController, TopicPhotosController
Ни один из них не чувствует себя хорошо, и мне интересно, если кто имеет некоторое представление о том, или если есть общий шаблон дизайна для обработки что-то вроде этого.
Это проект Rails 4, кстати.
Основываясь на описании, вы должны, вероятно, изучить полиморфные ассоциации. Это значительно упростит логику. Вот хорошая концепция [Railscast] (http://railscasts.com/episodes/154-polymorphic-association) по концепции. – engineersmnky
Я не думаю, что я был довольно ясен относительно отношений, но полиморфизм не то, что я ищу.Каждая фотография принадлежит пользователю, а также принадлежит к одной теме. Это своего рода приложение для обмена фотографиями. Я просто хочу отфильтрованную систему запросов, которая не беспорядок. – user3776967