※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
ActiveRecordによるデータの作成・削除
こちらの続き
作成「create」「save」について
新しいレコードを作成する
createは一発でレコードの作成ができる
Article.create(title:)
→content:
を入力していない
→ 「nil」は返ってきているが、なんだか進めてしまう
→ 問題を検知しにくい
Article.create!(title:)
→content:
を入力していない
→ バリデーションに失敗のエラー
→ 例外発生のため処理が止まる
save
の場合はインスタンスの作成から始めないといけない
article = Article.new({title: 'new', content: 'new'})
article.save
Article.last
↓ 実行結果はこんな感じ
Article.new
〜だけでは保存までされていない
- id:nil
- created_at: nil
- updated_at: nil
article.save
で保存ができたので、Article.last
でレコードが取得できる
title:
のみ入力してnew
をする
article.save
→false
(保存できなかったよ)とだけ教えてくれる
→ 問題を検知しにくい
article.save!
→ バリデーションに失敗のエラー
→ 例外発生のため処理が止まる
更新「update」「assign_attributes」について
Article.first
→ アップデートするレコードを取得するArticle.first.update(title: 'アップデートするよ')
→ アップデートの内容を書く
記事のタイトルが「アップデートするよ」に上書きされている
「save!
」「create!
」同様、「update!
」もある
article = Article.first
→ アップデートするレコードを取得するarticle.assign_attributes(title: 'assigned')
→ アップデートする内容を書くarticle.save
→ 保存する
article.assign_attributes
〜だけでは保存までされていない
- 「
create
」「update
」は一発で保存まで可能 - 「
save
」「assign_attributes
」は
書き換え→保存の手順を踏まないといけない
削除「destroy」について
article = Article.second
→ アップデートするレコードを取得するarticle.destroy
→ 取得したレコードを削除するArticle.second
→ 削除したので、取得できるレコードが変わっている
id:5のレコードを削除したので、Article.second
で取得できるのはid:6のレコードに変わっている
destroy!
だと、削除されないときに例外が発生して止まる
#DAY17