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)
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