Hallo,
in einem Projekt setze ich das Plugin “acts_as_commentable” ein, dass an
einen User gebunden ist und eine polymorphe Beziehung besitzt
(commentable):
belongs_to :commentable, :polymorphic => true
belongs_to :user
Wiederum wird das Model “User” mit “Profile” assoziiert (1:1). Im
Profile Model wird acts_as_commentable eingebunden (has many :comments).
In der comments Tabelle gibt es ein Datenfeld commentable_id, welches
den Nutzer repräsentiert auf dessen Profil das Kommentar geschrieben
wurde. Mein Problem ist jetzt, dass ich an einer Stelle nur die
Kommentare eines bestimmten Benutzertyps (“User”) ausgebenlassen möchte.
Wenn ich mit
@test = Comment.all(:include => :commentable, :limit => 4)
mir die Kommentare ausgeben lassen, kann ich über @test.commentable.type
auf den Typ zugreifen. Allerdings habe ich es noch nicht hinbekommen,
den Typen schon beim Abruf aus der Datenbank zu filtern. So etwas in der
Art:
@test = Comment.all(:include => :commentable, :conditions =>
[“commentable.type = ?”, “User”] :limit => 4)
Wenn ich das versuche, kriege ich die Fehlermeldung:
“Can not eagerly load the polymorphic association :commentable” bzw.
beim 2. Zugriff: “Association named ‘profile’ was not found; perhaps you
misspelled it?”
Kann das überhaupt so in etwa funktionieren?
Bitte um eure Hilfe.
Grüße,
Christian