[Ruby on Rails] Traitement commun entre les contrôleurs (à l'aide de concerts)

introduction

À mesure que le nombre de pages du site augmente, la description du même contrôleur augmentera. Si vous utilisez des préoccupations à ce moment-là, la description sera plus claire et la lisibilité sera améliorée.

Code réel

app/controllers/posts_controller.rb


class PostController < ApplicationController
  before_action :set_posts
  def set_posts
    @posts = Post.all
  end
end

app/controllers/users_controller.rb


class UserController < ApplicationController
  before_action :set_posts
  def set_posts
    @posts = Post.all
  end
end

Comme mentionné ci-dessus, il existe un processus commun appelé set_posts. Cependant, s'il y a un changement, les deux doivent être corrigés, ce qui est un problème. La façon de résoudre ces problèmes est d'utiliser les préoccupations.

Créer un fichier de préoccupations

Créez un fichier sous app / controllers / concerts. Cette fois, le nom du fichier sera "postable.rb".

app/controllers/concerns/postable.rb


module Postables
extend ActiveSupport::Concern

  def set_posts
    @posts = Post.all
  end

end

Pour appeler chaque contrôleur include postablesIl est décrit comme.

app/controllers/posts_controller.rb


class PostController < ApplicationController
  include Postables
  before_action :set_posts
end

app/controllers/users_controller.rb


class UserController < ApplicationController
  include Postables
  before_action :set_posts
end

C'est acceptable.

Résumé

En faisant ces choses, même s'il y a une correction, vous n'avez besoin de la corriger qu'à un seul endroit, et vous pouvez répondre immédiatement même si une erreur se produit. Il est recommandé de l'utiliser car le manque de description conduit à la maintenabilité.

De plus, sur Twitter, les technologies et les idées qui n'ont pas été téléchargées sur Qiita sont également téléchargées, donc Je vous serais reconnaissant si vous pouviez me suivre. Cliquez ici pour plus de détails https://twitter.com/japwork

Recommended Posts

[Ruby on Rails] Traitement commun entre les contrôleurs (à l'aide de concerts)
[Ruby on Rails] Vérification du code à l'aide de Rubocop-airbnb
[Ruby on Rails] Diaporama d'images utilisant Skippr
[Rails] Hériter des paramètres entre contrôleurs à l'aide de Sessions Helper
Ruby on Rails élémentaire
Principes de base de Ruby on Rails
Association Ruby On Rails
Essayez d'utiliser l'attribut de requête Ruby on Rails
Record d'apprentissage de Ruby on rails -2020.10.03
Création de portfolio Ruby on Rails
[Ruby on Rails] Debuck (binding.pry)
Record d'apprentissage de Ruby on rails -2020.10.05
Record d'apprentissage de Ruby on rails -2020.10.09
Record d'apprentissage Ruby on rails-2020.10.07 ②
Record d'apprentissage Ruby on rails-2020.10.07 ①
Annuler la migration de Ruby on Rails
Record d'apprentissage de Ruby on rails -2020.10.06
Résumé de la validation Ruby on Rails
Mémorandum de base Ruby on Rails
Ruby on Rails Paramètre de la fonction d'envoi automatique des e-mails (avec Gmail)
[Ruby on Rails] Animation de défilement facile de javascript (en utilisant ScrollReveal.js)
[Ruby on Rails] Défilement infini à l'aide de gem kaminari et jscroll
[Ruby on Rails] Read try (: [] ,: key)
Variables Ruby on Rails, résumé constant
Installation de Ruby + Rails sur Ubuntu 18.04 (rbenv)
[Ruby on Rails] Introduction de la fonction de pagination
Connaissance de base de Ruby on Rails
Progatez Ruby on Rails
Installez Ruby 2.5 sur CentOS 7 en utilisant SCL
Comment utiliser Ruby on Rails
Ruby on Rails compatible japonais-anglais i18n
(Ruby on Rails6) "Effacer" le contenu publié
[Ruby on Rails] Fonction de sortie CSV
Mémo de construction de l'environnement Ruby on Rails 6.0
[Ruby on Rails] Création de la page de confirmation
Ruby On Rails conçoit un conflit de routage
[Ruby on Rails] Implémentation de la fonction de commentaire
[Ruby on Rails] DM, fonction de chat
[Ruby on Rails] Méthode d'aide pratique
[Ruby on Rails] Arrêtez de "boucler jusqu'à ce que ..."
Comment créer une requête à l'aide de variables dans GraphQL [Utilisation de Ruby on Rails]
Comment déboguer le traitement dans le modèle Ruby on Rails avec juste la console
[Ruby on Rails] Introduction des données initiales
[Ruby on Rails] Fonction de recherche (non sélectionnée)
[Rails] Ajout de la fonction de commentaire Ruby On Rails
Ruby on Rails6 Guide pratique cp13 ~ cp15 [Mémo]
[Ruby on Rails] Afficher le test avec RSpec
[Ruby on Rails] 1 modèle CRUD (routage principal)