Frage

Ich bin mit acts_as_taggable einen Tag-Cloud für meine Anwendung zu erstellen. Ich habe ein Modell ‚Frage‘, die die acts_as_taggable Plug-in verwendet. Ich möchte im Grunde die Tags für die Frage Modell filtern.

Ich habe auch ein ‚Gegenstand‘ Modell. So die Beziehung zwischen den Themen und Fragen ist, dass ein Thema viele Fragen hat, und eine Frage gehört zu einem Thema.

Also, wenn ich @subject.questions.tag_counts nennen, es funktioniert gut. Aber ich sage nennen @subject.free_questions.tag_counts, wo free_questions ist eine Methode, die ich definiert haben, gibt es eine mir eine „undefined_method tag_counts für #<Array>. Ich möchte im Grunde alle die Tags für eine Teilmenge der Fragen.

vorschlagen kann jemand eine Abhilfe?

War es hilfreich?

Lösung

Es kann helfen, free_questions als named_scope zu implementieren, so dass Sie Verband Methoden auf sie anrufen können.

So etwas wie:

class Question < ActiveRecord::Base
  named_scope :free, :conditions => {:free => true} # conditions that make a question 'free'
end

Dann können Sie:

@subject.questions.free

und ich vermute, dies auch funktionieren kann. (Nicht viel Erfahrung mit acts_as_taggable haben)

@subject.questions.free.tag_counts

Wenn Sie eine named_scope (anstelle eines Modells Methode, die Sie definiert haben) ein Proxy-Objekt zurück, das aussieht und wirkt wie eine Array, sondern ermöglicht es Ihnen, Kette ActiveRecord Assoziation Methoden auf sie. Alle mögliche Methoden, die Arbeit an @subject.questions sollten Sie in der Lage sein, auf @subject.questions.free zu nennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top