Aufzeichnungen zeigen, die mit Kindern auf Elternseite: One-to-Many - acts_as_tree
-
18-09-2019 - |
Frage
Ich habe eine relativ einfache Eins-zu-viele-Beziehung und verwende acts_as_tree es in der Ansicht zu organisieren. Es sieht ein bisschen wie folgt aus:
root
|_Product 1
|_Product 2
|_Category 1.1
|_Product 3
|_Product 4
|_Category 1.1.1
|_Product 5
So wie ich es eingerichtet ist, dass ich Produkte in der ‚Show‘ Aktion der Kategorieliste. Allerdings kann ich nicht scheinen, herauszufinden, wie zu zeigen: Das Produkt 1-5 in der ‚Show‘ für die Kategorie 1, Produkt 3-5 in Kategorie 1.1 und so weiter ...
Hat jemand einen Tipp, von wo ich es abholen kann?
Danke! Val
Lösung
Sie können auch einen Blick auf die letzten Abstammung rel="nofollow Juwel für hohe Leistung, wenn man muss erhalten alle Nachkommen in einer SQL-Abfrage.
Andere Tipps
Wenn Sie mit awesome_nested_set (empfohlen, ich), dann können Sie dies tun:
Wenn Produkt belongs_to Kategorie:
class Category < ActiveRecord::Base
def products_in_tree
Product.all(:joins => :category, :conditions => ['categories.lft >= ? and categories.rgt <= ?', left, right])
end
end
Wenn Produkt has_and_belongs_to_many Kategorie (oder has_many: durch), ändern Sie die: Werden Sie Mitglied auf. Kategorien
Sie benötigen einen verschachtelten Satz verwenden, wenn Sie diese mit einem akzeptablen Leistung wollen lösen (das heißt, eine Vielzahl von separaten Datenbankabfragen zu vermeiden, um die Liste zu kompilieren).
Schienen verwendet Handlungen haben _ _ als nested_set eingebaut, und die Plugin .
Allerdings ist die Standard-Rails-Plugin nicht sehr gut, weshalb einige andere Plugins ist gemacht worden. Ich werde empfehlen, dass Sie Ehrfürchtig Nested Set , die ich selbst mit befriedigenden Ergebnissen verwendet haben.
Verschachtelte Sätze können ein bisschen schwer zu verstehen sein, aber hoffentlich die erste Verbindung und die anderen Readme Willen erklärt es Ihnen.