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.)
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
Ce n'est pas répertorié dans la référence. Parce que ** "méthode faite par moi-même avec le modèle" **! !!
―― 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é)
Avez-vous compris d'une manière ou d'une autre? ??
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.
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 **
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