2010-11-25 11 views
2

Ich habe zwei Modelle (Image und Video), die beide auf Act_As_Taggable eingerichtet sind.Acts_As_Taggable_On Tag Cloud für mehrere Modelle

Ich möchte die Tags für diese beiden Modelle verwenden, um eine gesamte Tag Cloud zu generieren (Bilder und Videos werden als Assets in der Anwendung verwendet, aber ich habe separate Modelle, so dass ich Mimetypen und Nachbearbeitung einfacher steuern kann) .

Was ist der beste Weg, um so etwas zu handhaben?

Antwort

1

Angenommen, Sie folgten this blog post und wenn Sie in der Lage sind, die Tags für jedes der Modelle einzeln zu extrahieren, müssen Sie nur die Arrays zusammenführen und an die Methode tag_cloud übergeben, wie in der Verknüpfung angegeben.

+0

Ich habe eigentlich nur die Funktion tag_counts_on verwendet (was eine Implementierung des Posts zu sein scheint, den Sie eingefügt haben). Das einzige Problem ist, dass wenn ich ein | Union auf dem Tag zählt, addiert die Zählungen nicht zusammen (es entfernt nur Duplikate aus den beiden Arrays). Was ist der beste Weg, das zu tun? –

+0

Tu keine Vereinigung. Führen Sie ein ODER mit '+' durch. '@image_tags + @ video_tags' – Chirantan

+0

@Chirrantan, ich habe + Operator verwendet und es funktioniert gut. Aber wie man die ganzen geholten Objekte von den beiden Modellen sortiert (wenn man den Bereich auf jedes Modell verteilt, sortiert man ein komplettes Modell und dann das nächste Modell und kehrt in ein Array des ersten Modells und dann des nächsten Modells zurück. Wie wendet man die Sortierung an? ganze abgerufene Elemente abgerufen) – useranon