【Rails基礎】データの保存、更新、削除

はじめに

Webアプリケーションを開発する上での基本となるCRUD
新規作成(Create)、表示(Read)、更新(Update)、削除(Destroy)それぞれの頭文字を取ってCRUDと呼ばれている。

今回はrailsでのデータの保存(新規作成)、更新、削除についてまとめる。
最後にデータベースにカラムを追加する方法についても記述する。

データの保存(新規作成)

newメソッド + saveメソッド または createメソッド
newでインスタンスを生成してsaveで保存する方法とnewとsaveの処理をまとめて行なうcreateというイメージ

new + save のパターン

#モデル名.new(カラム名: データ)+モデル名.saveのセットで保存される。
#引数にカラム名: データを入れることで保存内容を指定している。

post = Post.new(name: "投稿1", title: fuga, text: hoge)
post.save

createのパターン

#newメソッドとsaveメソッドをまとめて一度に実している。

Post.create(name: "投稿1", title: fuga, text: hoge)

データの更新

updateメソッド(saveメソッド) 基本的にはupdateメソッドで更新する。saveメソッドでも更新可能。
データを更新する際は、どのデータを更新するのか?となるので、元データを取得する必要がある。

updateのパターン

#どのデータを更新するのか、findで更新するデータを取得する。

post = Post.find(1)  #特定のレコードを取得
post.update(name: "投稿2", title: hoge, text: hogehoge)

saveのパターン

#カラムを指定して、それぞれデータを入れいていく

post = Post.find(1)  #特定のレコードを取得
post.name = "投稿2"
post.title = hoge
post.text = hogehoge
post.save  #保存(更新)

データの削除

destroyメソッド

これもどのデータを削除するのか?となるので、データを取得するところから。
モデル名.find(削除したいid).destroy(カラム名: データ)でデータを削除できる。

post = Post.find(1)
post.destroy(name: "投稿2")

#1行でシンプルな記述もできる
Post.find(1).destroy(title: hoge)

#レコードごと削除するとき
Post.destroy_all

データベースにカラムを追加する方法

今回オリジナルアプリの制作で、すでに作成していたBookモデルのテーブルにbookが販売中か否かを判断する、boolean型のsellというカラムを追加したのでメモしておく。
ターミナルでテーブルにカラムを追加する
rails g migration Addカラム名Toテーブル名 カラム名 : 型

% rails g migration AddSellToBooks sell:boolean

すると、以下のようにカラムを追加しましたっていうマイグレーションファイルができる。

class AddSellToBooks < ActiveRecord::Migration[6.0]
  def change
    add_column :books, :sell, :boolean
  end
end

nill制約などを付ける場合は、マイグレーションを実行する前に追記を忘れないようにしておく。 今回は、boolean型なのでデフォルトをfalseに設定するという追記もしておく。

class AddSellToBooks < ActiveRecord::Migration[6.0]
  def change
    add_column :books, :sell, :boolean, default: false, null: false
  end
end
% rails db:migrate

これでデータベースにカラムを追加できました。

終わりに

最近のブログネタはオリジナルアプリ制作のときに躓いたり、忘れていてできなかったりした基礎の部分のアウトプットになっています。理解しているつもりでいても抜けているところがあったりするので、基礎の定着は大事だなと改めて感じます。