【rails】データの作成・削除とActiveRecord

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

ActiveRecordによるデータの作成・削除

こちらの続き


作成「create」「save」について

モデル名.create({カラム名:’〇〇’, カラム名:’〇〇’})

新しいレコードを作成する

createは一発でレコードの作成ができる


create!

  • Article.create(title:)
    → content:を入力していない
    → 「nil」は返ってきているが、なんだか進めてしまう
    → 問題を検知しにくい
  • Article.create!(title:)
    → content:を入力していない
    → バリデーションに失敗のエラー
    → 例外発生のため処理が止まる


◯◯.save

saveの場合はインスタンスの作成から始めないといけない

  1. article = Article.new({title: 'new', content: 'new'})
  2. article.save
  3. Article.last

↓ 実行結果はこんな感じ

Article.new〜だけでは保存までされていない

  • id:nil
  • created_at: nil
  • updated_at: nil

article.saveで保存ができたので、Article.lastでレコードが取得できる


save!

title:のみ入力してnewをする

  • article.save
    → false(保存できなかったよ)とだけ教えてくれる
    → 問題を検知しにくい

  • article.save!
    → バリデーションに失敗のエラー
    → 例外発生のため処理が止まる


更新「update」「assign_attributes」について

モデル名.◯◯.update(カラム名: ‘◯◯’)

  1. Article.first
    → アップデートするレコードを取得する
  2. Article.first.update(title: 'アップデートするよ')
    → アップデートの内容を書く

記事のタイトルが「アップデートするよ」に上書きされている

save!」「create!」同様、「update!」もある


assign_attributes(カラム名: ‘◯◯’)

  1. article = Article.first
    → アップデートするレコードを取得する
  2. article.assign_attributes(title: 'assigned')
    → アップデートする内容を書く
  3. article.save
    → 保存する

article.assign_attributes〜だけでは保存までされていない


  • create」「update」は一発で保存まで可能
  • save」「assign_attributes」は
    書き換え→保存の手順を踏まないといけない

削除「destroy」について

  1. article = Article.second
    → アップデートするレコードを取得する
  2. article.destroy
    → 取得したレコードを削除する
  3. Article.second
    → 削除したので、取得できるレコードが変わっている

id:5のレコードを削除したので、Article.secondで取得できるのはid:6のレコードに変わっている

destroy!だと、削除されないときに例外が発生して止まる

#DAY17