Прежде всего, Коридор спрашивает и хорошо отвечает на этот вопрос на мелком уровне, но я не очень хорошо понимаю.
Если я остановлюсь на примере с coreyward, я могу представить себе фото-сайт, который намерен подчеркнуть курирование. Фотографии предназначены для отображения в альбомах, и одна фотография может появляться во многих альбомах. Кроме того, фотографии имеют много тегов.
Итак, пользователь has_many: альбомы,: фотографии и: теги, альбом has_many: фотографии и: теги (в виде фотографий), фотография has_many: теги и т. Д.
Таким образом, основной способ посмотреть на фотографию будет через / users / 123 / album / 456 / photos / 789. Фотографии будут иметь уникальный идентификатор, поэтому я мог бы просто получить доступ к / photos / 789, но я думаю, что URL-адрес является ценным инструментом для поиска путей в пользовательском опыте, и я бы предпочел, чтобы было ясно, что это фотография в определенном альбоме, принадлежащем конкретный пользователь. Как и Coreyward, я также хотел бы использовать тщеславные URL (URL-слагы) в нескольких местах.
Даже если бы я направлял действия #show и #index самым простым способом (например, / photos / 789 и / album / 456 / photos), #new и #create были бы немного более проблематичными. Если бы я открыл / users / 123 / album / 456 / photos / new, пользователь мог бы загрузить фотографию, которая получала бы идентификатор user_id 123, и приложение было бы достаточно умным, чтобы создать запись в таблице объединения (album_photos или что у вас) без попросить пользователя сделать эту связь в отдельном шаге.
Будут сценарии, когда кто-то, в зависимости от разрешений, захочет увидеть / users / 123 / photos или просто / photos, / album, / tags.
Я бы хотел избежать условной логики в контроллерах, подобных предложенному coreyward, но иметь app / controllers / photos_controller.rb, app / controllers / users / photos_controller.rb и app / controllers / users / album / photos_controller.rb кажется противным
Как мне поступить с чем-то вроде этого (в Rails 3)?
Спасибо!