2016-09-01 10 views
0

RESTfulなAPIで、ネストされたリソースについて、次のURL設計を考える:広告することを与えられたがマガジンIDを持つの後ろに合理的に何RESTfulなURLにネストされたリソースの親IDを持つの後ろに合理的

/magazines/:magazine_id/ads/:id POST 

IDは雑誌の広告を一意に識別します

さらに、ユーザーにそのURLまたは単に規約を提示すると、それはより美しいように見えます。より深い意味や制約はありますか?

答えて

0

これは、誰が開発しているかによって大きく異なります。理論的には、必要はありません。

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

は実際には、Railsのガイドは、彼らがIDを持っていないときにのみ、巣のリソースをできることを、2.7.2 Section (Shallow Nesting)にこれを示します

広告IDは雑誌の広告を一意に識別しますか?

これは最も一般的な規約ですが、普遍的なものではありません。あなたのモデルでto_paramを自由に上書きすることができ、データベースごとのユニバーサルキーの規約に違反します。あなたが雑誌でもこれをやったとします(たとえば、SEO目的)。この場合、ルートに雑誌のID /スラッグを含めて、かなり必要かもしれません。

0

これが行う "浅い" まさにです:

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

http://edgeguides.rubyonrails.org/routing.html

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

参照してください2.7.2浅いネスティングとまったく同じことを意味

関連する問題