class TodosController < ApplicationController before_action :set_todo, only: %i[show update destroy] def index render json: Todo.order(created_at: :desc) end def show render json: @todo end def create todo = Todo.new(todo_params) todo.save! render json: todo, status: :created rescue ActiveRecord::RecordInvalid => error render json: { errors: error.record.errors }, status: :unprocessable_entity end def update @todo.update!(todo_params) render json: @todo rescue ActiveRecord::RecordInvalid => error render json: { errors: error.record.errors }, status: :unprocessable_entity end def destroy @todo.destroy! head :no_content end private def set_todo @todo = Todo.find(params[:id]) end def todo_params params.expect(todo: %i[title completed]) end end