0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Learning Rails 14 (Use before action)

Last updated at Posted at 2016-05-01

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?