[RUBY] [Rails] Je ne sais pas comment utiliser le modèle ...

Contexte

Actuellement, je fréquente une certaine école de programmation, mais lors de la mise en œuvre de la fonction de recherche (fenêtre de recherche), on m'a dit d'utiliser un modèle et un contrôleur pour un traitement correct. Eh ... C'est correct d'utiliser tous les contrôleurs ... (Bien sûr, maintenant je les utilise activement séparément!)

** ・ Controller… Acquiert les données de la base de données, les enregistre et ne décrit qu'un traitement simple ** ** ・ Modèle: décrit la valeur obtenue à partir de la base de données qui effectue un traitement compliqué ** Je l'utilise correctement avec l'image.

Cependant, je ne voulais pas l'utiliser car je ne pouvais pas comprendre pourquoi le ** "catalogue de traitement" ** défini dans le modèle pouvait être utilisé avec le contrôleur, non, je ne pouvais pas. (Cet article n'est pas un article pour expliquer la fonction de recherche. Il s'agit simplement d'un résumé de mon esprit sur la façon d'utiliser le modèle.)

Implémentation de la fonction de recherche

models/tweet.rb (modèle)


class Tweet < ApplicationRecord
  validates :text, presence: true
  belongs_to :user
  has_many :comments

  def self.search(search)
    return Tweet.all unless search
    Tweet.where('text LIKE(?)', "%#{search}%")
  end

end

controllers/tweets_controller.rb (contrôleur)


class TweetsController < ApplicationController

  def search
    @tweets = Tweet.search(params[:keyword])
  end

end


Point inconnu

① Quelle est la méthode de «recherche» du contrôleur?
(Non répertorié dans la référence ??)

Ce n'est pas répertorié dans la référence. Parce que ** "méthode faite par moi-même avec le modèle" **! !!

② Quel est le modèle «soi»?
(Lorsque vous recherchez sur Google, cela s'appelle généralement une "méthode de classe" ...)

―― Je ne vais pas expliquer en détail ici, mais ** le nom de la classe est attribué ** à celui-ci. (L'affectation d'expression est utilisée pour plus de clarté)

③ Pourquoi le contrôleur peut-il utiliser le "catalogue de traitement" défini dans le modèle?
(Enfin le sujet principal)

Avez-vous compris d'une manière ou d'une autre? ??

L'identité de la méthode

En fait, diverses méthodes telles que "find method" et "include method" que nous utilisons souvent Tout comme j'ai créé la "méthode de recherche" cette fois, ** Rails ActiveRecord l'a fait **! !!

** Chaque modèle hérite d'ActiveRecord **, vous pouvez donc utiliser la méthode sur le contrôleur! (Strictement parlant, classe Tweet <ApplicationRecord <ActiveRecord :: Base) Si vous regardez la première ligne de tweet.rb (modèle tweet), vous pouvez la trouver.

Ce mec

Eh bien, cela s'allonge, mais il y en a un qui ne l'a pas encore résolu. Oui, qu'est-ce que la "méthode self = class" après tout?

Les méthodes de classe sont littéralement des méthodes qui peuvent être utilisées pour des «classes». Vous souvenez-vous de ce qu'était une «classe»? ?? Si vous ne savez pas, jetez un œil à la première ligne de tweet.rb (modèle tweet).

** Je ne comprends toujours plus! !! Lol **

Merci

Cela a peut-être été un peu déroutant, mais pardonnez-moi car je programme depuis 2 mois. (J'ai pu organiser ma tête relativement.) J'écris ceci depuis longtemps, mais merci d'avoir lu jusqu'au bout.

Si l'interprétation est erronée, je vous serais très reconnaissant de bien vouloir me le faire savoir.

De plus en plus.

Recommended Posts

[Rails] Je ne sais pas comment utiliser le modèle ...
[Rails] Comment utiliser la méthode de la carte
[Rails] Comment utiliser enum
Comment utiliser la jonction de rails
[Rails] Comment utiliser la validation
[Rails] Comment utiliser authenticate_user!
[Rails] Comment utiliser Scope
Comment utiliser la méthode link_to
[Rails] Comment utiliser la "devise" des gemmes
Comment utiliser la méthode include?
[Rails] Comment utiliser l'appareil (Remarque)
Comment utiliser la méthode form_with
[Rails] Comment utiliser les messages flash
Comment utiliser la classe wrapper
Comment utiliser Ruby on Rails
[Rails] Comment utiliser Active Storage
[Introduction aux rails] Comment utiliser le rendu
[Java] Comment utiliser la classe File
[Rails] Comment utiliser ActiveRecord :: Bitemporal (BiTemporalDataModel)
[Java] Comment utiliser la méthode toString ()
Etudier comment utiliser le constructeur (java)
[Traitement × Java] Comment utiliser la boucle
Comment utiliser MySQL dans le didacticiel Rails
J'ai essayé de comprendre comment la méthode des rails "redirect_to" est définie
À propos de la question pour laquelle j'étais accro à l'utilisation de hashmap
[Traitement × Java] Comment utiliser la classe
J'ai essayé de comprendre comment la méthode des rails "link_to" est définie
[Rails] N'utilisez pas la méthode de sélection uniquement pour réduire les colonnes!
[Ruby on Rails] Comment utiliser redirect_to
[Note] Comment utiliser Rails 6 Devise + cancancan
[Traitement × Java] Comment utiliser la fonction
[Java] Comment utiliser la classe Calendar
[Rails] Comment utiliser video_tag pour afficher des vidéos
[Rails] Comment utiliser la méthode d'assistance, confimartion
Comment utiliser credentials.yml.enc introduit à partir de Rails 5.2
Comment déboguer le traitement dans le modèle Ruby on Rails avec juste la console
[Rails] Comment décider de la destination par "voies ferrées"
Comment utiliser le module caméra OV7725 (ESP32-WROVER-B)
[Rails] Quand j'utilise form_with, l'écran se fige! ??
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2
J'ai essayé d'organiser la session en Rails
[Rails] Comment utiliser les boîtes de sélection dans Ransack
Comment utiliser les rails g échafaudage, fonctions, précautions
Sortie de la façon d'utiliser la méthode slice
Code utilisé pour connecter Rails 3 à PostgreSQL 10
Comment utiliser la méthode replace () (Java Silver)
Comment utiliser JQuery dans Rails 6 js.erb
[Rails] Comment utiliser PostgreSQL dans l'environnement Vagrant
Comment vérifier les commandes Rails dans le terminal
[Introduction à Ruby] Comment utiliser la méthode slice