オーダーメイドコース
icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

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

 
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

 

田島悠介

今回は、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] 未経験からWebエンジニアを目指す方法とは

筆者プロフィール

メンター稲員さん

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

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

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。