# A topic on a category of a subforum really belongs\_to what?

**URL:** <https://www.ruby-forum.com/t/a-topic-on-a-category-of-a-subforum-really-belongs-to-what/154294>\
**Category:** Rails\
**Created:** [November 27, 2008, 12:59pm UTC](https://www.ruby-forum.com/t/a-topic-on-a-category-of-a-subforum-really-belongs-to-what/154294 "2008-11-27T12:59:15Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![toltec](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/ed655f/32.png) [@toltec](https://www.ruby-forum.com/u/toltec)\
**Post date:** [November 27, 2008, 12:59pm UTC](https://www.ruby-forum.com/t/a-topic-on-a-category-of-a-subforum-really-belongs-to-what/154294/1 "2008-11-27T12:59:15Z")

</div>

Suppose you have a forum with many sub-forums, and each sub-forum has  
many categories (or sub-sub-forums), and each category may or may not  
have many sub-categories (or sub-sub-sub-forums).

Will a topic belong to the sub-category AND category AND sub-forum; or  
only to a sub-category, that will in turn belong to a category that will  
in turn belong to a sub-forum?

---

<div class="post-metadata">

**Author:** ![toltec](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/ed655f/32.png) [@toltec](https://www.ruby-forum.com/u/toltec)\
**Post date:** [November 27, 2008, 2:00pm UTC](https://www.ruby-forum.com/t/a-topic-on-a-category-of-a-subforum-really-belongs-to-what/154294/2 "2008-11-27T14:00:41Z")

</div>

In parts this may depend on the table structure.  
I would avoid having too much tables here (forum + category) and  
if possible go for a single table.

But in general avoid duplicate data. If a topic is linked to  
a sub category and this sub category is already linked  
to a category, there is not much need in adding another  
field to the topic. That would just bring the risk, that the  
data gets inconsistent if you need to relink the subforum  
structure.

You should provide a function that for a given forum gets the ids of  
all subforums (including sub sub forums, categories…) and  
then get all the topics linked with those forum ids

---

<div class="post-metadata">

**Author:** ![toltec](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/ed655f/32.png) [@toltec](https://www.ruby-forum.com/u/toltec)\
**Post date:** [November 27, 2008, 10:48pm UTC](https://www.ruby-forum.com/t/a-topic-on-a-category-of-a-subforum-really-belongs-to-what/154294/3 "2008-11-27T22:48:15Z")

</div>

I’d go for self-referencing Forum and Category, to allow for  
children / grand / etc in the same tables.  
After that, where the Topic belongs to is a matter of how do you  
traverse the tree.

---

<div class="post-metadata">

**Author:** ![toltec](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/ed655f/32.png) [@toltec](https://www.ruby-forum.com/u/toltec)\
**Post date:** [November 27, 2008, 11:54pm UTC](https://www.ruby-forum.com/t/a-topic-on-a-category-of-a-subforum-really-belongs-to-what/154294/4 "2008-11-27T23:54:03Z")

</div>

@Thorsten â€” I had figured that as well, so I went looking for info on  
that and found out about this neat “model:references” bit you can  
include in the script/generate.

@Klaus â€” Could you demonstrate?

For example, I was reading a tutorial earlier in which the author  
demonstrated that you can make a Forum “has\_many :posts, :through =\>  
:topics”, but you can’t make it “has\_many :users, :through =\> :posts”,  
because the relationship won’t go that deep.

So I wonder if it’s even possible for a Forum to have sub-categories  
through categories through sub-forums.
