关于Rails上的关联和模型的问题

我最近一直致力于一个项目,玩家可以创建一个团队并成为团队所有者,但是一个玩家也可以通过一个名为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邀请加入团队,团队的所有者对该玩家回答是或否? 如果是的话,他加入了Squad表,并且是团队的一员。 如果不是,他的请求就会被销毁。

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

所以玩家调用小队#create动作,它会创建一个小队模型。 团队#show显示团队的所有者加入来自玩家的请求并使用小队#accept或小队#reffid(或#update with status argument)然后将状态更改为true,或者销毁此小队记录。

基本上就是这样

更新

这就是基本的社交网络友情系统的工作方式。

使用state_machine,您可以定义另一个rejected状态,因此同一个用户在被拒绝后不会向团队所有者发送垃圾邮件。 通过检查updated_at字段,您可以实现超时,之后同一个人可以重复他的请求。

看起来您需要了解has_and_belongs_to_many关系。 这就是你应该用来将球队与球员,球队和球队联系在一起的球员。

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