There are so many duplication in this code.
app/controllers/users_controller.rb
This code is used several times
@user = User.find params[:id]
We always must think.
Don't Repeat Yourself.
Create this method.
users_controller.rb
private
def set_user
@user = User.find params[:id]
end
Add this line
users_controller.rb
before_action :set_user, only: [:show, :edit, :update, :destroy]
Delete this line from show, edit, update, destroy.
@user = User.find params[:id]
It means that before running show, edit, update, destroy actions, set_user action runs.
program flow is always like this.
- set_user → show
- set_user → edit
- set_user → update
- set_user → destroy
current code.
users_controller.rb
class UsersController < ApplicationController
before_action :set_user, only: [:show, :edit, :update, :destroy]
def index
@users = User.all
render status: 200
end
def show
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to users_path
else
render 'new'
end
end
def update
if @user.update(user_params)
redirect_to users_path
else
render 'edit'
end
end
def edit
end
def destroy
@user.destroy
redirect_to users_path
end
private
def user_params
params[:user].permit(:name)
end
def set_user
@user = User.find params[:id]
end
end