[RUBY] Comment créer une condition de recherche impliquant plusieurs modèles

Cette fois, le nom du produit (nom) et la description du produit (description) enregistrés dans le tableau des articles Un mot-clé à partir des valeurs de nom de balise (tag _name) stockées dans la table des balises Je souhaite créer une implémentation d'une fonction de recherche. (La table des éléments et la table des balises forment une association utilisant une table intermédiaire dans une relation plusieurs-à-plusieurs.)

Créez votre propre méthode en 1 modèle d'élément, définissez les conditions de recherche de chaque table et affectez-les à des variables (@item, @sescription et @tag) 2 Créez un tableau vide et affectez-le à une variable (@items) 3 Obtenez-le comme un élément en appliquant chaque méthode et ajoutez-le au tableau. (En ce qui concerne les étiquettes, un produit peut avoir plusieurs étiquettes, donc le double de chacune est appliqué.) 4 Utilisez la méthode uniq pour supprimer les éléments qui se chevauchent. (Exemple: lorsque vous recherchez "pomme", si le mot-clé "pomme" est inclus à la fois dans le nom du produit @item et dans la description du produit @description, le même produit sera inclus dans le tableau @items. Parce que) 5 Enfin, décrivez explicitement la valeur de retour et envoyez les données aux paramètres (@items)

item.rb


def self.item_search(search)
    if search != ""
      @item = Item.where('name LIKE(?)', "%#{search}%")
      @description = Item.where('description LIKE(?)', "%#{search}%")
      @tag = Tag.where('tag_name LIKE(?)', "%#{search}%")
      @items = []
       @item.each do |i| 
         @items << i
       end
       @description.each do |d|
        @items << d
       end
      @tag.each do |t|
        t.items.each do |ta|
          @items << ta
        end
      end
      @items = @items.uniq
      return @items

    else
      return nil
    end
  end


end

6 Appelez la "méthode item_search" créée dans le modèle précédemment avec le contrôleur.

items-controller.rb


 def item_search
    @items = Item.item_search(params[:keyword])
  end

7 Utilisez la méthode each pour récupérer les éléments contenus dans le tableau @items.

item_search.html


<% @items.each do |i| %>
  <% =i.name%>
[Omis]
<% end %>




Recommended Posts

Comment créer une condition de recherche impliquant plusieurs modèles
Comment créer plusieurs menus déroulants avec ActiveHash
Comment créer docker-compose
(Ruby on Rails6) Comment créer un modèle et une table
Comment créer une méthode
[Swift] Comment remplacer plusieurs chaînes
Comment implémenter la fonctionnalité de recherche dans Rails
Comment créer un référentiel Maven pour 2020
Comment mettre à jour les modèles associés avec accepte_nested_attributes_for
[Swift5] Comment créer un écran de démarrage
[rails] Comment créer un modèle partiel
Comment basculer entre plusieurs versions de Java
[Exemple de code Spring inclus] Comment créer un formulaire et comment obtenir plusieurs enregistrements
Comment créer une base de données H2 n'importe où
[Rails] Comment créer un graphique à l'aide de lazy_high_charts
Comment enregistrer dans plusieurs tables avec une seule entrée
Comment créer des pages pour le tableau "kaminari"
[Rails] Comment implémenter un test unitaire d'un modèle
Comment créer une classe qui hérite des informations de classe
Comment créer un thème dans Liferay 7 / DXP
[Rails] Comment télécharger plusieurs images à l'aide de Carrierwave
[1st] Comment créer un projet de framework Spring-MVC
Comment installer plusieurs JDK sur Ubuntu 18.04 LTS
Comment créer facilement un pull-down avec des rails
Rails6.0 ~ Comment créer un environnement de développement respectueux de l'environnement
[Rails] Comment créer un bouton de partage Twitter
Comment créer des données de catégorie hiérarchique à l'aide de l'ascendance
Comment créer des variables membres avec le modèle JPA
Comment définir plusieurs orm.xml dans Spring4, JPA2.1
Remarques sur la création d'extensions Burp Suite
Comment créer un certificat OLEORE (certificat SSL, auto-certificat)
[Java] Comment rendre plusieurs boucles for uniques
[Rails] Comment rechercher dans les colonnes de modèles associés (parents et enfants) dans Ransack
Comment changer l'action avec plusieurs boutons d'envoi
Comment créer un environnement Java en seulement 3 secondes
Comment créer une URL JDBC (Oracle Database, Thin)
Comment créer un projet Spring Boot dans IntelliJ
Comment créer un URI de données (base64) en Java
[Pour ceux qui créent des portfolios] Comment utiliser font-awesome-rails
Comment créer et exécuter des objets de classe Méthode, Proc, Méthode
[Offre d'abonnement Apple] Comment créer une signature d'offre promotionnelle
[Ruby] Comment extraire une valeur spécifique d'un tableau sous plusieurs conditions [sélectionner / chacun]