谢谢你的期待。总菜鸟在这里。遗憾!
我有一个自我参照协会,通过团队建立一个有两个用户和竞争的团队:
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 :(得分:0)
它可能会简化您稍微更改模型的内容。您可以创建用户模型,团队模型和成员模型来连接它们。 每个成员资格属于一个团队和一个用户。用户拥有许多会员资格,团队也有很多会员资格。我认为您可以使用验证将其限制为2。然后,您可以使用“has_many through”直接将团队连接到用户和用户到团队。 这种方法可以让您通过以下方式获得用户的所有比赛:
Competition.joins(teams: {memberships: :users}).where(users: {id: my_user_id})