So you probably know that Rails typically uses a singular name for models, e.g., User, and plural names for controllers, like UsersController. But what about other things you’re likely to encounter? Here’s a handy cheat sheet.
|Controller||Plural||rails g controller Users index show|
|Helper||Plural||rails g helper Users|
|Mailer||Singular||rails g mailer UserMailer|
|Migration||Plural||rails g migration AddEmailToUsers email:string|
|Model||Singular||rails g model User name:string|
|Observer||Singular||rails g observer User|
|Resource||Plural*||resources :users, :only => [:index, :show]|
|Scaffold||Singular||rails g scaffold User name:string|
|Table||Plural||SELECT * FROM
|View||N/A||app/views/users/index.html.erb – comprised of controller (plural) and action (singular)|
*Singular resources can also be made, but should be specified as such. For example, say each User has_one Account. You could create the Accounts controller (still plural) and add resource :account (both ‘resource’ and the resource’s name are singular) to routes.rb. This assumes that the controller can find the correct Account without an id, e.g. @account = current_user.account. resource does not create an index route for obvious reasons. The same controller can be shared between a plural and a singular resource, e.g. resource :account and resources :accounts both point to the Accounts controller. More in the routing guide.