超初心者がエンジニアになるまでの力戦奮闘の軌跡

プログラミングをメインで学んだことのアウトプットブログ

Railsガイドを読む #2 ~Active Recordの基礎~

Railsガイド

railsguides.jp

上記のサイトはRailsのガイドが書かれているRailsを使う人間ならば必ず目を通すであろうガイド。 プログラミング初心者である自分はその中でRailsのことだけでなくIT用語でわからない用語が複数出てきたので、しっかりと理解して読み進めていきたいと思う。

なのでこの記事では実際にわからない用語や基礎的な内容で知っておきたいことを調べそれについてまとめていきたい。

わからない用語

ORM(オブジェクト/リレーショナルマッピング)

⋯オブジェクトとRDMとのマッピングを行う=>SQLを直接書かずにオブジェクトのメソッドで簡単にDB操作を可能にするもの。RailsではActive RecordがこのORMシステムの「Active Recordパターン」を実装したもの。

モデルの命名ルール

⋯モデルのクラス名は大文字で単数形(例:Book)。テーブル名は複数形になる(books)。モデルのクラス名を2語以上にする場合はキャメルケースを使用する(例:BookClub)。テーブル名はスネークケースとなる(例:book_clubs)。

スキーマ命名ルール

⋯データベースのテーブルで使うカラム名についても利用目的に応じたルールがある。外部キーの場合は「テーブル名の単数形_id」(例:item_id)とする。主キーの場合はidというカラムが使われる。

newメソッドとcreateメソッドの違い

⋯どちらも新しいオブジェクトが返されるが、createメソッドを実行すると新しいオブジェクトが返され、さらにデータベースに保存される=>new+save

*createやnewでブロックを渡すとそのブロックで初期化された新しいオブジェクトがyieldされる 例:

user = User.new do |u|
  u.name = "David"
end

同じ要領でupdateメソッドもsaveメソッドを使う必要のないメソッド。

# userにnameが"David"のユーザーを代入し、"Dave"にupdate
user = User.find_by(name: 'David')
user.name = 'Dave'
user.save

↓

# updateメソッドでsaveメソッドを使わずにupdate
user = User.find_by(name: 'David')
user.update(name: 'Dave')
複数のレコードを一度に更新する

⋯update_allというクラスメソッドによって複数のレコードを一気に更新できる

複数レコードを削除する

⋯条件を指定して複数削除する場合はdestroy_byを使用し、全ユーザーを削除する場合はdestroy_allを使用する。

破壊的メソッドを使う場合

update!save!など破壊的メソッドを使用すると失敗した場合にfalseではなく例外を発生させる。