Moin Michael,

nö, so geht das nicht. Hast Du sicher beim Ausprobieren auch gemerkt. :) In Deinen :conditions rufst Du die Methode category auf :commentable, also einem Symbol, was die Methode normalerweise nicht kennt. Aber anders geht es:

Comment.all(:include => {commentable => :category}, :conditions => {'categories.visible' => true})

ActiveRecord verbindet damit die beteiligte Tabellen über LEFT OUTER JOINs, und somit kannst Du auf alle Felder aller Tabellen zugreifen und nur die Zeilen selektieren, bei denen die Kategorie sichtbar ist. Hierfür verwendest Du die Notation <Tabellenname>.<Feldname>. Habe ich gerade nur mit einem simplen include getestet, sollte so aber auch über mehrere Ebenen (Comment -> Commentable -> Category) hinweg funktionieren.

Gruß, Thomas


Am 21.03.2009 um 14:19 schrieb Michael ..:

Hallo.

Ich habe ein kleine Problem und benötige eure Hilfe.

Ich habe Kommentar die mit commentable_type und commentable_id an ein
Objekt gebunden sind. Im aktuellen Fall ist commentable nur ein
BlogEntry.

Ein BlogEntry liegt in einer Kategorie. Ein Kategorie kann sichtbar oder
unsichtbar sein. Ich möchte aber nur Kommentare anzeigen wenn der
BlogEntry wo das Kommentar geschrieben wurde in einer sichtbaren
Kategorie sind.

So etwas in der Art:
Comment.find(:all, :include => {:commentable => :category}, :conditions
=> {:commentable.category.visible => true})

Kann das so in etwas funktionieren?
Bitte um eure Hilfe.

danke
Michael
--
Posted via http://www.ruby-forum.com/.
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/listinfo/rubyonrails-ug

_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/listinfo/rubyonrails-ug

Antwort per Email an