概要
ネストしたリソースのパス指定方法について、一瞬戸惑ってしまったので備忘録として記録します。
環境
・ruby '2.5.7'
・rails '5.2.3'
・rspec-rails '4.0.0.beta2'
指定方法
結論: rails routes
してルーティングを一覧表示して確認する!
####(例) Rspecのリクエストテストでパス指定をする
次のような、ルーティングを宣言していたとします。
routes.rb
resources :datespots do
resources :comments, only: [:create, :destroy]
end
ターミナルでrails routes
すると、ルーティングが一覧表示される。
Prefix Verb URI Pattern Controller#Action
(省略)
datespot_comments POST /datespots/:datespot_id/comments(.:format) comments#create
datespot_comment DELETE /datespots/:datespot_id/comments/:id(.:format) comments#destroy
(省略)
これを元に、パス指定すればOK!
comments_spec.rb
(省略)
it "有効な内容のコメントが登録できること" do
expect {
post "/datespots/#{datespot.id}/comments", params: {
datespot_id: datespot.id,
comment: { content: "オシャレですね!" }
}
}.to change(datespot.comments, :count).by(1)
end
(省略)