2012-07-05 76 views
0

感谢您的期待。这里总共noob。抱歉!has_many通过团队和inverse_teams比赛

我有一个自我指涉协会成立有两个用户一个团队,通过团队竞赛:

class User < ActiveRecord::Base 
    has_many :teams, :dependent => :destroy 
    has_many :inverse_teams, :class_name => "Team", :foreign_key => "team_mate_id" 
    has_many :competitions, :through => :teams 
end 

我想使用类似user.competitions但这只会返回竞赛通过team.user_id直接属于用户的团队。

我需要的是用户为团队和逆向团队进行的比赛,而不会显示重复的结果。

请让我知道如果我需要在这里显示更多的代码,并记住这是我的第一个堆栈溢出问题。

我真的很感谢你的帮忙!谢谢!

回答

0

它可能会简化一些事情,让您稍稍改变模型。您可以创建一个用户模型,一个团队模型和一个会员模型来连接它们。 每个成员属于一个团队和一个用户。用户有许多成员资格,团队也有许多成员资格。我认为你可以使用验证将其限制为2。然后,您可以使用“has_many through”直接将团队与用户和用户连接到团队。 这种方法可以让你获得类似的所有比赛:

Competition.joins(teams: {memberships: :users}).where(users: {id: my_user_id})