First the data model, then the question:

running Rails 2.2.3, I have

class Forum < ActiveRecord::Base
        has_many                :topics, :dependent
=> :destroy, :order => 'created_at
desc'
end

class User < ActiveRecord::Base
        has_many                :topics, :dependent => :destroy
        has_many                :comments, :dependent => :destroy
        has_many                :replies, :dependent => :destroy
end

class Topic < ActiveRecord::Base
        belongs_to              :forum
        belongs_to      :user
        has_many                :comments, :dependent => :destroy
end

class Comment < ActiveRecord::Base
        belongs_to      :user
        belongs_to              :topic
        has_many                :replies, :dependent => :destroy
end

class Reply < ActiveRecord::Base
        belongs_to              :user
        belongs_to      :comment
end

So Users can post Topics to Forums. They can also post Comments to the
Topics in a Forum. And they can post Replies to the Comments.

I want to be able to get a list of Forums they've participated in by
posting either Topics or Comments or Replies.

I could just create a Membership that would relate a User to a Forum
whenever they post something, but then I'd need to maintain the
Membership when/if they delete their last Post/Comment/Reply from a
given Forum. That seems messy.

what I'm wonder is if I can do something like this:

class User < ActiveRecord::Base
        has_many                :topics, :dependent => :destroy
        has_many                :comments, :dependent => :destroy
        has_many                :replies, :dependent => :destroy

        has_many                :forums, :through => :topics, :uniq =>
true
        has_many                :forums, :through => :comments, :uniq
=> true
        has_many                :forums, :through => :replies, :uniq
=> true

end

I dont think so... Only the Topic model is directly associated with
the Forum.

Is there a clean way to do a HMT association on multiple, nested
associations like this?

-- 
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