2016-09-01 3 views
0

Учитывая следующий дизайн URL для вложенных ресурсов в RESTful API:Rational за имеющим идентификатор родительского вложенных ресурсов в RESTful URL

/magazines/:magazine_id/ads/:id POST 

Что рациональное за имея журнал идентификатор в там , учитывая, что объявления id уникально идентифицирует объявления в журналах?

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

ответ

0

Хорошо, это сильно зависит от того, кто развивается. Теоретически, нет необходимости.

В самом деле, Rails Guides показать это в 2.7.2 Section (Shallow Nesting), что вы можете только гнездятся ресурсы, когда они не имеют ID:

resources :articles do 
    resources :comments, only: [:index, :new, :create] 
end 
resources :comments, only: [:show, :edit, :update, :destroy] 

Или в вашем случае:

resources :magazines do 
    resources :ads, only: [:index, :new, :create] 
end 
resources :ads, only: [:show, :edit, :update, :destroy] 
0

Учитывая, что идентификатор объявлений однозначно идентифицирует объявления в журналах?

Это наиболее распространенное соглашение, но не универсальное. Вы можете переопределить to_param в своей модели и нарушить соглашение об универсальном по умолчанию базе данных. Представьте, что вы также сделали это для журналов (например, для целей SEO). В этом случае, в том числе идентификатор журнала/пробка на маршруте, может оказаться весьма необходимым.

0

Это именно то, что "мелкий" делает:

resources :magazines do 
    resources :ads, shallow: true 
end 

означает, точно так же, как

resources :magazines do 
    resources :ads, only: [:index, :new, :create] 
end 
resources :ads, only: [:show, :edit, :update, :destroy] 

См раздел 2.7.2 Мелкая гнездящихся в http://edgeguides.rubyonrails.org/routing.html

Смежные вопросы