before_actionメソッドってコードをスッキリさせてくれる優れものです!

 

before_actionメソッドとは、コントローラーで定義されたアクションが実行される

前に、共通の処理を行うことができます。

このメソッドを使用することで、重複した記述を1つのメソッドにまとめつことが

出来るため、コードがすっきりして可読性が高まります。

 

今回は only オプションも使って edit と show アクションのみに before_actionで

set_postを使って、処理します。

set_post は private に記述します。

 

app/controllers/posts_controller.rb

class PostsController < ApplicationController
  before_action :set_post, only: [:edit, :show]

  def index
    @posts = Post.all
  end

  def new
    @post = Post.new
  end

  def create
    Post.create(post_params)
  end

  def destroy
    post = Post.find(params[:id])
    post.destroy
  end

  def edit
  end

  def update
    post = Post.find(params[:id])
    post.update(post_params)
  end

  def show
  end

  private

  def post_params
    params.require(:post).permit(:name, :image, :text)
  end

  def set_post
    @post = Post.find(params[:id])
  end
end

 

こもメソッド、すごく便利ですよね。

今回は 1つだけしか使いませんでしたが、before_actionメソッドは他にもたくさん

あるので、また違うものもシェアしていけたらと思います。