2012-08-28 146 views
0

我正在構建一種用於遊戲的留言板系統,並且我遇到了關係建模問題。這是我到目前爲止:Rails 3建模複雜Has_Many關係

Models 
------ 
User (Has Many Posts) 
Post (Belongs to User, Belongs to Game) 
Game (Has Many Posts) 

這是我需要添加。

Models 
------ 
Server (Belongs to Game but also part of Post) 
Replies (Belongs to Post and Post's User but needs to function like private messaging) 

建模這兩件事最簡單的方法是什麼?我最好的猜測服務器是:

Server - Has Many Posts, Belongs To Game 
Posts - Belongs To Server 
Game - Has Many Servers 

我不知道從哪裏開始回覆。帖子和用戶將有許多回復,但回覆將有兩個用戶和一個帖子。謝謝。

+1

我不知道爲什麼你需要明確模式「服務器 - 有很多的職位」。在應用程序代碼中,無論何時您需要訪問與服務器關聯的帖子,您是不是通常會寫'server.game.posts'。至於'回覆',只要你有'回覆 - 屬於帖子,屬於海報,屬於回覆',你應該能夠建立你需要的所有查詢,除非我錯過了一些至關重要的事情。 – cdesrosiers

+0

如果你沒有做服務器has_many文章,你將如何訪問如果服務器,如果你只是有帖子? I.E.當顯示單個帖子時,我使用的是post.game.name,使用post.server.name沒有意義嗎? –

+1

你將不得不爲回覆做一個'has_many',實際上沒有其他方法來定義這種關係。 –

回答

0

我解決了這個用這些關係:

模型服務器

belongs_to :game 
has_many :posts 

型號遊戲

has_many :posts 
has_many :servers 

型號回覆

belongs_to :post 
belongs_to :poster, class_name: :user, foreign_key: :poster_id 
belongs_to :replier, class_name: :user, foreign_key: :replier_id 

型號後

belongs_to :user 
belongs_to :game 
belongs_to :server 
has_many :replies, dependent: :destroy 

型號用戶

has_many :posts, dependent: :destroy 
has_many :replies, dependent: :destroy