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などのように、アクション名と対応づきます。
筆者プロフィール
メンター稲員さん
フリーランスエンジニア。 経験言語:Ruby、Rails、Python、C/C++、Java、Perl、HTML/CSS3、JavaScript、CoffeeScript,Node.js。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。