[RUBY] [Utilisation spécifique de before_action] Refactoring des rails

Qu'est-ce que before_action?

before_action est un type de refactoring qui peut être utilisé avec les contrôleurs Rails.

** Si vous utilisez before_action Des actions communes peuvent être entreprises avant l'exécution des actions définies dans le contrôleur. ** **

Utilisation spécifique

Jetons un coup d'œil aux contrôleurs suivants.

app/controllers/tweets_controller.rb


class TweetsController < ApplicationController

  def index
    @tweets = Tweet.all
  end

  def new
    @tweet = Tweet.new
  end


  def create
    Tweet.create(tweet_params)
  end

  def destroy
    tweet = Tweet.find(params[:id])
    tweet.destroy
  end

  def edit
    @tweet = Tweet.find(params[:id])
  end

  def update
    tweet = Tweet.find(params[:id])
    tweet.update(tweet_params)
  end

  def show
    @tweet = Tweet.find(params[:id])
  end
  
  private
  def tweet_params
    params.require(:tweet).permit(:distance, :image)
  end
end

Si vous regardez de près, des sept actions de Rails, Le contenu des actions d'édition et d'affichage est @tweet = Tweet.find(params[:id]) Est utilisé à plusieurs reprises.

Pour ** refactoriser et améliorer la lisibilité de ce code **, Utilisez before_action comme suit:

app/controllers/tweets_controller.rb


class TweetsController < ApplicationController
  before_action :set_tweet, only: [:edit, :show]

  def index
    @tweets = Tweet.all
  end

  def new
    @tweet = Tweet.new
  end

  def create
    Tweet.create(tweet_params)
  end

  def destroy
    tweet = Tweet.find(params[:id])
    tweet.destroy
  end

  def edit
  end

  def update
    tweet = Tweet.find(params[:id])
    tweet.update(tweet_params)
  end

  def show
  end

  private

  def tweet_params
    params.require(:tweet).permit(:name, :image, :text)
  end

  def set_tweet
    @tweet = Tweet.find(params[:id])
  end
end

de cette façon, En utilisant before_action, il est exécuté avant deux actions, modifier et afficher Définissez une nouvelle méthode appelée set_tweet (le nom de la méthode est décidé par vous-même)

Je l'ai utilisé à plusieurs reprises plus tôt @tweet = Tweet.find(params[:id]) Il devient possible de mettre en place.

Résumé

En utilisant before_action Vous pouvez éviter que le code ne devienne redondant et améliorer la lisibilité du code!

Le code donné à titre d'exemple cette fois est Le contenu des deux actions edit et show était le même, Plus vous utilisez de code à plusieurs reprises, plus l'effet est important!

En tant que refactoring de rails Veuillez essayer de référencer!

Recommended Posts

[Utilisation spécifique de before_action] Refactoring des rails
[Rails] Différences et utilisation de each_with_index et each.with_index
[Rails] Présentation de PAY.JP
Utilisation minimale de Mockito
Implémentation de la suppression d'ajax dans Rails
[Rails] Introduction aux principes de base du dispositif
[Java] Utilisation de Mirage-Basic de SQL
[Rails] Implémentation de la fonction de catégorie
Utilisation super basique d'Eclipse
[Rails] Implémentation de la fonction tutoriel