fv17の日記

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

Rails - modelまわりのメソッド一覧(CRUD)

Create / 生成

new

機能:モデルオブジェクトの作成。データベースには保存はしない

user = User.new

属性値の指定もできる

user = User.new(name: "Foo Bar", email: "foo@bar.com")

save

機能:生成したモデルオブジェクトをデータベースに保存
返り値:保存できた場合 true、保存できない場合 false

user = User.new
user.name = "Foo Bar"
user.save

属性を変更して更新できる

user = user.find(params[:id])
user.name = "Bar Baz"
user.save

create

機能:モデルオブジェクトを生成し、データベースに保存
戻り値:モデル(idやcreated_atなどのカラムに値が入っている)

user = User.create(name: "Foo Bar", email: "foo@bar.com")

Read(Search) / 読み取り

find

機能:指定したidと一致したデータを取得
返り値:モデル

User.find(1)

find_by

機能:指定した属性と値で完全一致検索を行う。複数ヒットした場合は、最初の1件のみを取得
返り値:モデル

User.find_by(email: "foo@bar.com")

where

機能:指定した属性と値で完全一致検索を行う。複数ヒットした場合は、該当するデータを全て取得
返り値:ActiveRecord::Relation

User.where(prefecture: "Tokyo")

first

機能:テーブルの先頭のレコードを取得する
返り値:モデル

User.first

オプションで件数指定も可能。
この場合、返り値はArray / 配列であり、ActiveRecord::Relationではない。

User.first(10)

all

機能:全てのデータを取得する
返り値:ActiveRecord::Relation

User.all

Update / 更新

update

機能:指定した属性を更新し、データベースに保存
返り値:モデル

user = user.find(params[:id])
user.update(name: "Bar Baz", age: 17)

update_attributes

機能:updateのalias。1つでもvalidationに引っかかると保存されない

update_attribute

機能:指定した1カラムのみを更新する。validationを省略する点に注意。

user = user.find(params[:id])
user.update_attribute(:name, "Bar Baz")

Delete / 削除

ブログ等によって書いてあることが異なるため、下記を参照
https://api.rubyonrails.org/v5.2.1/

destroy

機能:データベースから削除。:dependent optionに従って削除し、各種callbackも実行される
返り値:削除したレコードのArray

user = user.find(params[:id])
user.destroy

delete

機能:データベースから削除。:dependent optionは無視し、各種callbackは実行されない
補足:一テーブルに対し、SQLのDELETE文を発行する。
返り値:削除したレコードのArray

user = user.find(params[:id])
user.delete