2011-05-17 20 views
0

我一直在做一個項目,最近在那裏玩家可以創建一個隊,併成爲球隊老闆,但玩家也可以通過一個單獨的表,命名小隊團隊的一部分。問題有關協會和模型on Rails的

class Player 
has_many :teams 
has_many :squads 
end 

class Squad 
belongs_to :player 
belongs_to :team 
end 

class Team 
belongs_to :owner, :class_name => "Player" 
has_many :squads 
has_many :players, :through => "squads" 
end 

我不知道這是否是我需要做的,但我無法弄清楚。我怎樣才能讓球員通過球隊被邀請加入球隊,球隊的球隊是否回答該球員?如果是的話,他加入桌球隊併成爲球隊的一員。如果否,他的請求被銷燬。

回答

1

你需要讓你的小隊模型中的布爾字段status,即默認爲false。如果你需要更復雜的東西,你可以使用this gem

所以玩家調用一個小隊#創建行動,它會創建一個小隊模式。 Team#show顯示球員加入球員的所有者,並使用球隊#accept或squad#reject(或#update與狀態參數),然後將狀態更改爲true,或者銷燬球隊記錄。

,基本上就是這樣

更新

這是一個基本的社交網絡邀請好友系統是如何工作的。

隨着state_machine你可以定義另一種狀態rejected,所以相同的用戶不會被拒絕的請求後,垃圾郵件的球隊老闆。通過檢查updated_at字段,可以實現超時,之後同一個人可以重複他的請求。

+0

謝謝謝謝:)以後我會試一試,但我認爲這會奏效。 – Samth 2011-05-17 23:53:53

+0

好的,讓我看看我是否理解:玩家將創建一個'Squad',它將有一個空的'team_id'。 Team Owner將使用'team#show'檢查請求,並編輯或刪除它們。通過編輯,所有者會將'team_id'添加到模型中,並且'Squad'將完成。如果這是正確的,我會在哪裏需要你提到的「狀態」?感謝幫助我得到那麼多:) – Samth 2011-05-18 00:10:43

+0

不,夥計。 team_id應該初始設置。否則,您將無法向團隊所有者顯示請求,因爲您不知道要求哪個團隊。這就是你需要身份的原因。 – bassneck 2011-05-18 11:04:46

0

看起來你需要了解has_and_belongs_to_many關係。這就是你應該用來將球隊與球員,隊員與球隊以及球隊聯繫起來的原因。

至於邀請,你應該創建一個在適當的方式播放器/小隊/團隊相關的模型稱爲邀請。有關邀請的通知可以在控制器/視圖中處理。

+0

你說我把關聯的方式不起作用?而這個邀請模式,將被連接到其他3個模型? 感謝您的回答:) – Samth 2011-05-17 23:45:05