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

时间:2011-05-17 23:26:21

标签: ruby-on-rails ruby-on-rails-3 associations rails-models

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

2 个答案:

答案 0 :(得分:1)

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

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

基本上就是这样

<强>更新

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

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

答案 1 :(得分:0)

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

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