Howdy,

I've been banging my head on this problem for a bit.

I'm using the acts_as_commentable plugin which works great.

The scenario, I'm on the user's dashboard and want to display comments
with commentable_type = Venue.  No problem.  But, if I want to display
the name of that Venue with the comment... big nasty.  The polymorphic
key is a composite key and rails doesn't have a way to recognize
this.  I really want to keep with Active Record so I tried
has_many_polymorphs, which makes finding the venue through the
comments table possible but it doesn't JOIN the venue table with the
comments table.  So I resorted to writing a sql statement.

#User.rb

acts_as_commentable
has_many_polymorphs :commentables, :from =>
[:venues, :artists, :events], :through => :comments

# --> WORKS but doesn't include the venue

@user.comments.find :all, :conditions => "`comments`.commentable_type
= 'Venue'"

# --> Doesn't work, but it's my intention

@user.comments.find :all, :conditions => "`comments`.commentable_type
= 'Venue'", :include => :venues

#--> WORKS but it's ugly

Comment.find_by_sql "SELECT `comments`. * , `venues`. name   FROM
`comments` INNER JOIN `venues` ON venues.id = comments.commentable_id
WHERE (user_id =#{self.id} AND commentable_type = 'Venue') ORDER BY
created_at DESC LIMIT 0 , 30"

Does anyone have any ideas on how I can avoid using find_by_sql for
this operation?

Best,

Jackson

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to