Qs with has_many and belongs_to

I'm trying to make a discussion website, which involves using the
has_many attributes. I wanted to make sure of a few things:
I want my models linked this way:
(Parent) Forum -> Board -> Message_thread -> Message (Child)

This means, then, that the Board should hold the foreign key of
Forums; Message_thread, the foreign key of Boards; and Messages, the
foreign key of Message Thread? The "agile" book wasn't too clear on
this.

Second, when adding and editing a child model (say, Message), do I
have to search through Forum, Board, and Message_threads to add a
Message? Or could I simply find the id to Message_thread and add a
Message in that thread (or, in editing's case, find and edit a
corresponding Message)?

What about deleting a Message? Do I have to search through Forum,
Board, and message-thread for that as well? Or will the count/find/
size/length method update itself after I singly delete a Message? How
would I delete a Forum? Do I have to delete all it's children, and
children of those?

Thanks for the insight!

I'm trying to make a discussion website, which involves using the
has_many attributes. I wanted to make sure of a few things:
I want my models linked this way:
(Parent) Forum -> Board -> Message_thread -> Message (Child)

This means, then, that the Board should hold the foreign key of
Forums; Message_thread, the foreign key of Boards; and Messages, the
foreign key of Message Thread? The "agile" book wasn't too clear on
this.

Sounds about right.

Second, when adding and editing a child model (say, Message), do I
have to search through Forum, Board, and Message_threads to add a
Message? Or could I simply find the id to Message_thread and add a
Message in that thread (or, in editing's case, find and edit a
corresponding Message)?

Correct

What about deleting a Message? Do I have to search through Forum,
Board, and message-thread for that as well? Or will the count/find/
size/length method update itself after I singly delete a Message? How
would I delete a Forum? Do I have to delete all it's children, and
children of those?

Deleteing a message is just deleting a row from the messages table - no messing around there. If you are deleting a forum, You can set your has_many to be dependant => :delete_all and so on (or I believe the the database can enforce that for you), or just whip up some stuff by hand

Fred

Thanks for the reply, Fred, but you left me hanging at a few spots :stuck_out_tongue:

> I'm trying to make a discussion website, which involves using the
> has_many attributes. I wanted to make sure of a few things:
> I want my models linked this way:
> (Parent) Forum -> Board -> Message_thread -> Message (Child)
> This means, then, that the Board should hold the foreign key of
> Forums; Message_thread, the foreign key of Boards; and Messages, the
> foreign key of Message Thread? The "agile" book wasn't too clear on
> this.
Sounds about right.

Oh good!

> Second, when adding and editing a child model (say, Message), do I
> have to search through Forum, Board, and Message_threads to add a
> Message? Or could I simply find the id to Message_thread and add a
> Message in that thread (or, in editing's case, find and edit a
> corresponding Message)?
Correct

Do you mean "correct" to the first question, or the second?

> What about deleting a Message? Do I have to search through Forum,
> Board, and message-thread for that as well? Or will the count/find/
> size/length method update itself after I singly delete a Message? How
> would I delete a Forum? Do I have to delete all it's children, and
> children of those?
Deleteing a message is just deleting a row from the messages table -
no messing around there. If you are deleting a forum, You can set your
has_many to be dependant => :delete_all and so on (or I believe the
the database can enforce that for you), or just whip up some stuff by
hand

So this means something like:

Thanks a lot for the suggestion, Ryan. Just to clarify, I made the
model name "message_thread" because thread is already a reserved
object. Oh well.

Now the only question I need answered is adding/editing child models.
In the case I need to add/edit a message, do I have to search through
forums, then boards, then message threads, and then append a new
message in the message thread? Or do I just find a single message
thread (assuming it's already associated with a board and forum)?