Lesson 3
Setting Up Modification Queries - Update, Delete
Introduction

Welcome to this lesson on setting up modification queries in our ToDo app using Ruby on Rails. In this lesson, we will cover two vital operations for managing ToDo items: Update and Delete. By the end of this lesson, you will know how to implement these operations in your Ruby on Rails application, enabling you to modify or remove ToDo items effectively.

Updating and deleting records are essential functionalities for any dynamic application. They allow users to correct mistakes, change information, or remove unwanted data. Let's understand how to implement these operations in our ToDo app.

Understanding the Update Operation

The update operation allows users to modify existing ToDo items. In a Rails application, this process involves updating the record in the server-side data as well as reflecting the changes in the HTTP response.

The update method in TodosController is responsible for handling the HTTP PUT request that updates the todo item.

Ruby
1class TodosController < ApplicationController 2 def update 3 todo = TodoService.update(params[:id], todo_params) 4 render json: todo 5 end 6 7 private 8 9 def todo_params 10 params.require(:todo).permit(:title, :description) 11 end 12end

Explanation:

  • The update method is called with the params[:id] and todo_params.
  • params[:id] captures the ID of the ToDo item we want to update.
  • todo_params securely fetches and permits the title and description of the ToDo item.
  • Finally, the updated ToDo item is rendered as a confirmation.

The update method in the TodoService handles the logic of finding and updating the data in memory.

Ruby
1class TodoService 2 def self.update(id, todo_params) 3 todo = get_by_id(id) 4 todo[:title] = todo_params[:title] if todo_params[:title] 5 todo[:description] = todo_params[:description] if todo_params[:description] 6 todo 7 end 8end

Explanation:

  • This method finds the ToDo item using the given id.
  • It then updates the title and description if they are present in todo_params.
  • Finally, the updated todo item is returned.
Understanding the Delete Operation

The delete operation allows users to remove ToDo items from the dataset. This functionality is crucial for managing the lifecycle of data in any application.

The destroy method in TodosController is responsible for handling the HTTP DELETE request.

Ruby
1class TodosController < ApplicationController 2 def destroy 3 TodoService.delete(params[:id]) 4 head :no_content 5 end 6end

Explanation:

  • The destroy method calls TodoService.delete with the ID of the ToDo item to be deleted.
  • head :no_content sends an HTTP response with a 204 status code indicating successful deletion with no content.

The delete method in the TodoService removes the specified ToDo item from the dataset.

Ruby
1class TodoService 2 def self.delete(id) 3 @todos.reject! { |todo| todo[:id] == id.to_i } 4 end 5end

Explanation:

  • This method filters out the todo item with the given ID from the @todos array using reject!.
Summary and Preparation for Practice

In this lesson, we covered the implementation of Update and Delete operations in our Ruby on Rails ToDo app. We reviewed:

  • The importance of Update and Delete functionalities in dynamic applications.
  • The roles of TodosController#update and TodoService.update in modifying ToDo items.
  • The roles of TodosController#destroy and TodoService.delete in deleting ToDo items.

With this foundation, you are now ready to practice these operations in the coding exercises that follow. These exercises are designed to reinforce your understanding and give you hands-on experience with what you've learned.

Keep up the excellent work, and let's move on to the practice exercises!

Enjoy this lesson? Now it's time to practice with Cosmo!
Practice is how you turn knowledge into actual skills.