[RUBY] So erstellen Sie eine Suchbedingung mit mehreren Modellen

Diesmal werden der Produktname (Name) und die Produktbeschreibung (Beschreibung) in der Artikeltabelle gespeichert Ein Schlüsselwort aus den in der Tags-Tabelle gespeicherten Werten für den Tag-Namen (Tag-Name) Ich möchte eine Implementierung einer durchsuchbaren Funktion erstellen. (Die Elementtabelle und die Tags-Tabelle bilden eine Zuordnung unter Verwendung einer Zwischentabelle in einer Viele-zu-Viele-Beziehung.)

Erstellen Sie Ihre eigene Methode in einem Artikelmodell, definieren Sie die Suchbedingungen aus jeder Tabelle und weisen Sie sie Variablen zu (@item, @sescription und @tag). 2 Erstellen Sie ein leeres Array und weisen Sie es einer Variablen zu (@items). 3 Holen Sie es als ein Element ab, indem Sie jede Methode anwenden und dem Array hinzufügen. (Bei Tags kann ein Produkt mehrere Tags haben, daher wird jeweils das Doppelte angewendet.) 4 Verwenden Sie die uniq-Methode, um die überlappenden Elemente zu entfernen. (Beispiel: Wenn Sie nach "apple" suchen und das Schlüsselwort "apple" sowohl im Produktnamen @item als auch in der Produktbeschreibung @description enthalten ist, wird dasselbe Produkt in das Array @items aufgenommen. Weil) 5 Beschreiben Sie abschließend explizit den Rückgabewert und senden Sie die Daten an params (@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 Rufen Sie die zuvor mit dem Controller im Modell erstellte "item_search-Methode" auf.

items-controller.rb


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

7 Verwenden Sie jede Methode, um die im Array @items enthaltenen Elemente abzurufen.

item_search.html


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




Recommended Posts

So erstellen Sie eine Suchbedingung mit mehreren Modellen
So erstellen Sie mit ActiveHash mehrere Pulldown-Menüs
So erstellen Sie Docker-Compose
(Ruby on Rails6) So erstellen Sie ein Modell und eine Tabelle
So erstellen Sie eine Methode
[Swift] So ersetzen Sie mehrere Zeichenfolgen
So implementieren Sie Suchfunktionen in Rails
So erstellen Sie ein Maven-Repository für 2020
So aktualisieren Sie verwandte Modelle mit accept_nested_attributes_for
[Swift5] So erstellen Sie einen Begrüßungsbildschirm
[Rails] So erstellen Sie eine Teilvorlage
So wechseln Sie zwischen mehreren Java-Versionen
[Spring-Beispielcode enthalten] So erstellen Sie ein Formular und erhalten mehrere Datensätze
So erstellen Sie überall eine H2-Datenbank
[Rails] So erstellen Sie ein Diagramm mit lazy_high_charts
So speichern Sie mit einer Eingabe in mehreren Tabellen
So erstellen Sie Pagenationen für das "Kaminari" -Array
[Rails] So implementieren Sie einen Unit-Test eines Modells
So erstellen Sie eine Klasse, die Klasseninformationen erbt
So erstellen Sie ein Thema in Liferay 7 / DXP
[Rails] So laden Sie mehrere Bilder mit Carrierwave hoch
[1.] So erstellen Sie ein Spring-MVC-Framework-Projekt
So installieren Sie mehrere JDKs unter Ubuntu 18.04 LTS
So erstellen Sie einfach ein Pulldown mit Rails
Rails6.0 ~ So erstellen Sie eine umweltfreundliche Entwicklungsumgebung
[Rails] So erstellen Sie eine Twitter-Freigabeschaltfläche
So erstellen Sie hierarchische Kategoriedaten mithilfe von Vorfahren
So erstellen Sie Elementvariablen mit dem JPA-Modell
So definieren Sie mehrere orm.xml in Spring4, JPA2.1
Hinweise zum Erstellen von Burp Suite-Erweiterungen
So erstellen Sie ein Oleore-Zertifikat (SSL-Zertifikat, Selbstzertifikat)
[Java] Wie man mehrere for-Schleifen einzeln macht
[Rails] Durchsuchen von Spalten verwandter Modelle (Eltern und Kinder) in Ransack
So ändern Sie die Aktion mit mehreren Senden-Schaltflächen
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
So erstellen Sie eine JDBC-URL (Oracle Database, Thin)
So erstellen Sie ein Spring Boot-Projekt in IntelliJ
So erstellen Sie einen Daten-URI (base64) in Java
[Für diejenigen, die Portfolios erstellen] Verwendung von Font-Awesome-Rails
Erstellen und Ausführen von Methoden-, Proc- und Methodenklassenobjekten
[Apple-Abonnementangebot] So erstellen Sie eine Signatur für ein Werbeangebot
[Ruby] So extrahieren Sie einen bestimmten Wert aus einem Array unter mehreren Bedingungen [select / each]