カテゴリー
未分類

Rails routes.rbのresourcesについて

Railsroutes.rbで使えるresourcesは自動でレコードの一覧・表示・作成・更新・削除のルーティングを生成してくれる。get, post, patch, destroyを自分で書いて一つずつ手動で設定しても良いが、Railsの提供するルーティングをなるべく採用したい。

# routes.rb
resources :posts

このように記述しコマンドラインrake routesを実行すると現在のルーティングを確認できる

    posts GET    /posts(.:format)                posts#index
          POST   /posts(.:format)                posts#create
new_post GET    /posts/new(.:format)            posts#new
edit_post GET    /posts/:id/edit(.:format)       posts#edit
post GET    /posts/:id(.:format)            posts#show
PATCH  /posts/:id(.:format)            posts#update
PUT    /posts/:id(.:format)            posts#update
DELETE /posts/:id(.:format)            posts#destroy

ただし、このようなルーティングは公開するアプリケーションでは使わない。公開を行うアプリケーションで、レコードの操作はログイン後ダッシュボードで行うといったアプリケーションのルーティングは下記のようなものが望ましいのではないか。

resources :posts, except: [:new, :create, :edit, :update, :destroy]
namespace :dashboard do
resources :posts, except: [:show]
end

こう書いてrake routesを実行する

              posts GET    /posts(.:format)                     posts#index
               post GET    /posts/:id(.:format)                 posts#show
dashboard_posts GET    /dashboard/posts(.:format)           dashboard/posts#index
POST   /dashboard/posts(.:format)           dashboard/posts#create
new_dashboard_post GET    /dashboard/posts/new(.:format)       dashboard/posts#new
edit_dashboard_post GET    /dashboard/posts/:id/edit(.:format)  dashboard/posts#edit
dashboard_post PATCH  /dashboard/posts/:id(.:format)       dashboard/posts#update
PUT    /dashboard/posts/:id(.:format)       dashboard/posts#update
DELETE /dashboard/posts/:id(.:format)       dashboard/posts#destroy

これで基本のデータ操作のルーティングは自動で生成できた。ログインの実装についてここでは触れないが、/dashboard以下にはログインしていなければアクセスできないものとする。

このようにresourcesを使えばroutes.rbの記述もすっきりする。これに加えて検索ページなどを実装する時に、手動でのルーティング設定を行うのが良いのではないか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA