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.
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.
Ruby1class 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:
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.The update
method in the TodoService
handles the logic of finding and updating the data in memory.
Ruby1class 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:
id
.title
and description
if they are present in todo_params
.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.
Ruby1class TodosController < ApplicationController 2 def destroy 3 TodoService.delete(params[:id]) 4 head :no_content 5 end 6end
Explanation:
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.
Ruby1class TodoService 2 def self.delete(id) 3 @todos.reject! { |todo| todo[:id] == id.to_i } 4 end 5end
Explanation:
@todos
array using reject!
.In this lesson, we covered the implementation of Update and Delete operations in our Ruby on Rails ToDo app. We reviewed:
TodosController#update
and TodoService.update
in modifying ToDo items.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!