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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.