일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Python
- html
- javascript
- C로 시작하는 컴퓨터 프로그래밍4판
- 자바
- vscode
- 日本語
- ruby
- Web
- java
- 건담베이스
- 일본어
- jsp
- DART
- 単語
- 인프런
- CSS
- rails
- 비즈니스일본어
- springboot
- rails7
- nico
- 연습문제
- Flutter
- Spring
- メソッド
- 건담
- 一日一つメソッド
- 디지몬
- 반다이몰
- Today
- Total
AR삽질러
Rails 一日一つメソッド (Day5) destroyメソッド 본문
Rails 一日一つメソッド (Day5) destroyメソッド
destroyメソッドとは
- destroyメソッドは Active Record オブジェクトをデータベースから削除するために使用される。オブジェクトのデータベース レコードを削除し、関連するコールバック(before_destroy、after_destroyなど)をトリガーし、 このプロセスにより、オブジェクトに関連付けられたデータを安全に削除できる。
destroyメソッドの動作方法
1. オブジェクトの検索
- まず、削除したいオブジェクトを探したり、呼び出したりします。 これはfind、find_byなどのメソッドを使って行うことがでる。
2. オブジェクトの削除
- destroyメソッドを呼び出してオブジェクトを削除する。 この過程で、該当するオブジェクトのbefore_destroyコールバックが先に実行され、データベースからレコードが削除された後、after_destroyコールバックが実行される。
例題
def destroy
@user = User.find(params[:id])
# @user = User.find_by(id: params[:id])
redirect_to users_path, notice: 'ユーザーが削除されました。'
end
destroyメソッド例題
1. HTTP要請
- 'index' Viewで '削除' バトンをクリックしたら 'user_path(user), method: :delete' の 'users/:id' に渡す。
2. Routing
- delete要請は 'users/:id' に渡され 'UsersController' の 'destroy' アクションに渡される。
3. Controllerアクション
- 'User.find(params[:id]) を使ってDatabaseからIDを持っている 'User'レコードを削除する。
4. リダイレクション
- ユーザーが削除されたら 'redirect_to users_path' にリダイレクションされる。
users_controller.rb
class UsersController < ApplicationController
def destroy
@user = User.find(params[:id])
@user.destroy
redirect_to users_path, notice: 'ユーザーが削除されました。'
end
end
@user = User.find(params[:id])
- 渡された 'id' で削除する 'id' をDatabaseから探す。
@user.destroy
- destroyメソッドを呼び出てユーザーを削除する。
redirect_to user_path, notice: 'ユーザーが削除されました。'
- ユーザーの削除に成功したら 'user_path' にリダイレクションする。
routes.rb
Rails.application.routes.draw do
# 회원삭제
delete 'users/:id', to: 'users#destroy'
end
delete
- 'delete'とはHTTPリクエストでRailsで削除の作業をする。
'users/:id'
- URLパタンを指定する。
to: 'users#destroy'
- 対象 : どんなControllerのどんなアクションを指定する。
- ここで 'users' は 'UsersController' を表している、'destroy' は 'UserController' 中にある 'destroy' アクションを示している。
index.html.erb
<!-- app/views/users/index.html.erb -->
<h1>登録されている Users</h1>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<% @users.each do |user| %>
<tr>
<td><%= user.id %></td>
<td><%= user.name %></td>
<td><%= user.email %></td>
<td>
<%= button_to '削除', user_path(user), method: :delete %>
</td>
</tr>
<% end %>
</tbody>
</table>
button_to '削除'
- HTMLを生成し'削除'バトンをクリックすると、サーバーにリクエストを送信する。
user_path(user)
- ユーザーの固有IDを共に 'users/:id' URLを生成する。
method: :delete
- destroyアクションにRoutingするようにする。
https://github.com/designAR/rails_method_study/tree/day05_destroy
'Ruby > RubyOnRails-日本語' 카테고리의 다른 글
初めてのRuby on Rails Controller作成, トラブルシューティング (1) (0) | 2023.12.27 |
---|---|
Rails 一日一つメソッド (Day6) new, persisted?メソッド (0) | 2023.12.26 |
Rails 一日一つメソッド (Day4) createメソッド (0) | 2023.12.24 |
Rails 一日一つメソッド (Day3) all, find_dy, renderメソッド (1) | 2023.12.23 |
Rails 一日一つメソッド (Day2) findメソッド (2) | 2023.12.22 |