У меня есть модель, Playlist
, которая belongs_to
a User
. Вместо маршрутов для плейлистов бытьДобавить имя пользователя владельца в Rails route
/playlists
/playlists/new
/playlists/:id
/playlists/:id/edit
Я хотел бы, чтобы они были
/:username/playlists
/:username/playlists/new
/:username/:playlist_slug
/:username/:playlist_slug/edit
Но, это должно работать:
playlist_path(@playlist)
# NOT: playlist_path(@playlist.user, @playlist)
Поскольку пользователь пути является @playlist.user
. Это не DRY, чтобы повторять этот параметр каждый раз, когда мне нужен путь. Кроме того, это риск, поскольку он позволяет использовать фиктивные звонки. Например, playlist_path(@alice, @bob.playlists.first)
.
Спасибо за Подсказка. Однако я не нашел способ использовать FriendlyId, чтобы помочь мне превратить 'user_playlist_path (@user, @playlist)' в 'user_playlist_path (@playlist)'. –
Ну, это не «дружелюбие», которое вам нужно для этого. Если вы хотите охватить путь для пользователя * one *, вам нужно жестко закодировать его в своих маршрутах или использовать 'current_user' в контроллере. Если вы дадите мне больше контекста, я напишу вам обновление –