[RUBY] J'ai séparé la même description qu'une méthode sous private dans le contrôleur Rails et je l'ai implémentée pour qu'elle puisse être appelée avec before_action

Cet article utilise les Rails 6.0.0 installés.

Choses à faire

Rassemblez plusieurs descriptions Rendre le contrôleur plus facile à voir Utiliser une méthode privée utiliser before_action

Code initial

items_controller.rb


def show 
   @item = Item.find(params[:id])
end

def edit
   @item = Item.find(params[:id])
end

def update
   @item = Item.find(params[:id])
end 
[Comme vous pouvez le voir, des descriptions similaires sont utilisées dans plusieurs actions. Je voudrais séparer cela et l'appeler! ]

Méthode 1 ~ Je vais le diviser en privé et en dessous ~

items_controller.rb


private
 def set_item
    @item = Item.find(params[:id])
  end

Tout d'abord, supprimez la description de @ (variable d'instance) dans le code initial. Et rendez privé en bas. Créez une méthode set_item et mettez-y la description que vous avez supprimée précédemment. (Tout nom de méthode convient tant qu'il est facile à comprendre) En faisant cela, vous pouvez le séparer en tant que méthode. Cependant, avec cela seul, il ne peut pas être appelé simplement en le coupant.

Méthode 2 ~ Je l'appellerai avec before_action ~

items_controller.rb


before_action :set_item, only: [:show, :edit, :update]

Écrivez ceci en haut du contrôleur. Pour expliquer un par un before_action: Description à appeler avant que chaque action ne soit exécutée set_item: Nom du mésot créé en privé de la méthode 1 only: La signification du kanji selon laquelle il n'est utilisé que pour des actions spécifiques Le mot opposé est attendre, ce qui signifie l'utiliser pour autre chose qu'une action spécifique! Après cela, décrivez le nom de l'action à spécifier!

finalement

Est-il utile de rendre le code initial plus facile à comprendre? Vous pensez peut-être au début. J'étais le même. Lol Cependant, c'est très pratique car vous n'avez qu'à ajouter le nom de l'action à before_action, par exemple, lorsque vous avez besoin de la même description pour une autre action après cela! Vous pouvez écrire le code de sorte qu'il soit facile à voir pour les autres et pas une longue description! Je continuerai à être conscient de l'application d'un code plus facile à voir pour les autres!

Recommended Posts

J'ai séparé la même description qu'une méthode sous private dans le contrôleur Rails et je l'ai implémentée pour qu'elle puisse être appelée avec before_action
J'ai essayé d'implémenter la fonction de téléchargement d'images multiples dans Rails afin que plusieurs images puissent être glissées pour le message
J'ai essayé un puzzle qui ne peut être résolu que par les 10% de mauvais ingénieurs
Un hachage actif qui peut être traité comme des données même s'il n'est pas dans la base de données
Comment tester une méthode privée et la simuler partiellement en Java
[Rails] "Pry-rails" qui peuvent être utilisés lors de l'enregistrement avec la méthode create
Continuation ・ Hash actif qui peut être traité comme des données même s'il n'est pas dans la base de données ~ Affichage