Ruby on Rails CRUD実装
前回は、Ruby on Rails試用のための環境構築と、
実際にWeb上で動作するメモ一覧機能の作成に取り組みました。
今回は、学習用として作成しているメモアプリに、以下の機能を追加しました。
- メモの編集・削除機能の実装(CRUDの完成)
- 作成日ごとにメモを絞り込んで表示する機能
Railsの基本的なCRUD処理や、
URLパラメータを利用したデータの絞り込みを実装することで、
Controller・View・Modelそれぞれの役割をより理解できました。
編集、削除機能の実装
編集機能の実装では、
- 既存のメモを更新
- 成功時は一覧画面へリダイレクト
- 失敗時は入力内容を保持したまま編集画面を再表示
という形をとりました。
実装例として update アクション👇
def update
if @memo.update(memo_params)
redirect_to memos_path, notice: "更新しました"
else
render :edit
end
end現状は単純な構成ですが、
バリデーションを追加した場合に備えて
失敗時の分岐を実装しています。
削除機能の実装では、
指定したメモを削除し、一覧画面に戻す処理を実装。
def destroy
@memo.destroy
redirect_to memos_path, notice: "削除しました"
endmemos_pathはメモ一覧ページ(/memos)へのパスです。
<%= link_to "削除", memo_path(memo),
data: { turbo_method: :delete, turbo_confirm: "削除しますか?" } %>誤操作防止のために、”削除”というリンクを押下した際に確認ダイアログを表示するように実装しました。
また、日付絞り込み機能では、
def by_date
if params[:date].present?
date = Date.parse(params[:date])
@memos = Memo.where(created_at: date.beginning_of_day..date.end_of_day)
.order(created_at: :desc)
else
@memos = Memo.none
end
end
URLパラメータとして受け取った日付は文字列なので、
Date.parse を使ってDate型に変換しています。
その上で beginning_of_day と end_of_day を用いて、
ユーザーが”新規作成”を押下した時点での日付を範囲検索しています。
・実行した際の画面↓
・”編集”を押下した際の画面↓
・日付(2026-01-25)を押下した際の画面↓
・”削除”を押下した際のダイアログ画面表示
実装途中ではエラーにも直面しましたが、
処理の流れを一つずつ追うことで原因を理解し、解決することができました。
フレームワークに任せきりにするのではなく、
コードの流れを自分の言葉で説明できる状態を目指して、
引き続き個人開発を進めていきたいと思います。