Railsの命名規則を現役エンジニアが解説【初心者向け】

初心者向けにRailsの命名規則について現役エンジニアが解説しています。モデル名は単数形で記述し、テーブル名はスネークケースの複数形で記述します。カラム名はスネークケースの単数形、コントローラ名は複数形で記述し、末尾にControllerを付けます。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Railsの命名規則について解説します。

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。
 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Railsの命名規則について詳しく説明していくね!

大石ゆかり

お願いします!

 

Railsの命名規則(モデル名、テーブル名等)

Rails の命名規則について解説していきます。
 

モデル

モデル名は単数形で記述します。
試しに以下のコマンドを実行してみましょう。
 

$ rails generate model book

 

以下のように、先頭が大文字のBookクラスがapp/models/book.rbに記述されます。

 

class Book < ApplicationRecord
end

 

もし複数単語からなるMyBookクラスを作りたい場合は、以下のコマンドを実行しましょう。
スネークケース(my_book)、キャメルケース(myBook)、パスカルケース(MyBook)、ケバブケース(my-book)など、どの書き方でも大丈夫です。

 

$ rails generate model my_book

 

以下のようにMyBookクラスがapp/models/my_book.rbに記述されます。
ファイル名はスネークケースとなっていることに注意してください。

 

class MyBook < ApplicationRecord
end

 

テーブル

テーブル名は、スネークケースの複数形で記述します。
先ほどのrails generate modelコマンドを実行することで、一緒にdb/migrate配下にマイグレーションファイルが作成されます。

create_table :my_books となっています。

 

class CreateMyBooks < ActiveRecord::Migration[5.2]
  def change
    create_table :my_books do |t|
      t.timestamps
    end
  end
end

 

カラム

カラム名はusers.name, users.ageなどのように、スネークケースの単数形で記述します。

 

コントローラ

コントローラ名は、複数形で記述し、末尾にControllerを付けます。
モデルと同じように、rails generate controllerコマンドで生成してみましょう。

 

$ rails generate controller my_books

 

コマンドを実行するとapp/controllers/my_books_controller.rbにMyBooksControllerが定義されています。

 

class MyBooksController < ApplicationController
end

 

ビュー

ビューファイルはapp/views/<resource>/<action>.html.haml のように命名・配置します。
MyBooksControllerのshowアクションであれば、app/views/my_books/show.html.erbです。

 

命名の例

管理権限を持つAdminUserクラスに対して、コントローラやモデル、ビューなどを作成してみます。

rails generate scaffoldコマンドを使うと、基本的なCRUD操作を実現するための一式をまとめて作成できます。

 

$ rails generate scaffold admin_users name:string age:unsigned_integer birth_year:unsigned_integer

 

テーブル、カラム

テーブル名は admin_usersで複数形のスネークケース、カラム名はbirth_yearなど単数形のスネークケースです。

 

class CreateAdminUsers < ActiveRecord::Migration[5.2]
  def change
    create_table :admin_users do |t|
      t.string :name
      t.unsigned_integer :age
      t.unsigned_integer :birth_year
      t.timestamps
    end
  end
end

 

モデル

ファイル名は、app/models/admin_user.rbで単数形のスネークケース、クラス名はAdminUserで単数形のパスカルケース(アッパーキャメルケース)になっています。

 

class AdminUser < ApplicationRecord
end

 

コントローラ

ファイル名は、app/controllers/admin_user.rbで単数形のスネークケース、クラス名はAdminUsersControllerで複数形のパスカルケース(アッパーキャメルケース)になっています。

メソッド名はスネークケースを使うことが一般的ですが、まれにキャメルケースのgemもあります。

 

class AdminUsersController < ApplicationController
  before_action :set_admin_user, only: [:show, :edit, :update, :destroy]
  # GET /admin_users
  # GET /admin_users.json
  def index
    @admin_users = AdminUser.all
  end
  # 中略
  private
    # Use callbacks to share common setup or constraints between actions.
    def set_admin_user
      @admin_user = AdminUser.find(params[:id])
    end
    # Never trust parameters from the scary internet, only allow the white list through.
    def admin_user_params
      params.require(:admin_user).permit(:name, :age, :birth_year)
    end
end

 

ビュー

ビューファイルはapp/views/admin_usersに配置されます。
app/views/admin_users/index.html.erbなどのように、アクション名と対応づきます。

 

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

筆者プロフィール

メンター稲員さん

フリーランスエンジニア。
大手SEからフリーランスのWeb系エンジニアにジョブチェンジ。

経験言語:Ruby、Rails、Python、C/C++、Java、Perl、HTML/CSS3、JavaScript、CoffeeScript,Node.js。
おうち大好きマンです。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。