Я рекомендую следовать за рельсами oficial guides. Считается хорошей практикой, чтобы избежать вложенности ресурсов более чем на 1 уровень. Тем не менее, если вам действительно нужен этот уровень гнездования, вы можете использовать опцию shallow
. таким образом, по крайней мере, ваши маршруты будут более чистыми. Как отмечается в документации, упоминавшееся выше:
Один способ избежать глубокой вложенности (как рекомендовано выше), чтобы произвести действия по сбору контекстными под родителем, с тем, чтобы получить чувство иерархии, а не гнездо действия участника. Другими словами, только строить маршруты с минимальным количеством информации, чтобы однозначно идентифицировать ресурс
Вы могли бы попробовать что-то вроде этого:
resources :courses, shallow: true do
resources :sections, shallow: true do
resources :lessons, shallow: true do
resources :sub_lessons
end
end
end
Просто поиграйте с этим немного и использовать rake routes
для посмотрите, как выглядят ваши маршруты.
Однако, что вы должны спросить себя, например, мне нужно, чтобы уроки шли по разделам? Может быть, лучше, чтобы разделить их, что-то вроде:
resources :courses do
resources :sections
end
resources :lessons do
resources :sub_lessons
end
Все зависит от объема вам нужно, в каком действии, например, если при определенном действии, вам нужно ограничить уроки, основанные на курсах, но не в секциях, то вам потребуется только идентификатор курса, переданный как параметр.