Be specific when defining your routes
Many controllers don’t need the full set of restful routes to be generated. We might have models in our codebase that aren’t user-deletable or are simple enough not need a full #show
view.
In those cases you don’t need to generate the routes or actions.
Instead of…
…generating all the routes:
config/routes.rb
resources :dogs do
resources :meals
end
Use…
…only the routes you’re actually going to use.
config/routes.rb
resources :dogs, only: %w[create edit index new show update] do
resources :meals, only: %w[create index]
end
Why?
There’s no value to maintaining, generating, and loading routes that do not link to actions in your controllers. I may result in errors creeping into your code and unexpected behaviour to live on in your application.
If a user can’t destroy
a Thing
in a ThingsController
, don’t give them a route to try and do so.
Why not?
It might be faster at the point of creation to just leave all those superflouous routes around, but it feels like a poor decision for the maintainability of your app.
Last updated on March 22nd, 2021