0

我最近一直在做一个项目,其中玩家可以创建团队并成为团队所有者,但玩家也可以通过名为 Squad 的单独表成为团队的一部分。

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

我不知道这是否是我制作我想要的东西所需要的全部,但我就是想不通。如何让玩家通过 Squad 请求被邀请加入团队,而团队所有者对该玩家回答是或否?如果是,他会加入 Table Squad 并成为团队的一员。如果没有,他的请求就被破坏了。

4

2 回答 2

1

您需要status在 Squad 模型中创建一个布尔字段,默认为 false。如果你需要更复杂的东西,你可以使用这个 gem

因此玩家调用了一个小队#create 动作,它创建了一个小队模型。Team#show 显示来自玩家的团队加入请求的所有者并使用squad#accept 或squad#reject(或带有状态参数的#update),然后您将状态更改为true,或销毁此小队记录。

基本上就是这样

更新

这就是一个基本的社交网络交友系统的工作原理。

With state_machine you could define another state rejected, so the same user doesn't spam the team owner with requests after being rejected. By checking the updated_at field, you could implement a timeout, after which the same person could repeat his request.

于 2011-05-17T23:46:55.740 回答
0

看来您需要了解 has_and_belongs_to_many 关系。这就是你应该用来将球队与球员、球队与球员以及球队与球队联系起来的方法。

至于邀请,您可能应该创建一个名为 Invitation 的模型,该模型以适当的方式与球员/小队/团队相关联。可以在控制器/视图中处理有关邀请的通知。

于 2011-05-17T23:41:02.213 回答