0

感谢您的关注。总菜鸟在这里。对不起!

我有一个自引用关联来建立一个有两个用户的团队并通过团队进行比赛:

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 直接属于用户的团队的比赛。

我需要的是团队和反向团队的用户竞赛,而不显示重复的结果。

4

1 回答 1

0

稍微更改模型可能会简化您的操作。您可以创建一个用户模型、一个团队模型和一个成员模型来连接它们。每个会员资格属于一个团队和一个用户。用户有很多会员资格,团队也有很多会员资格。我认为您可以使用验证将其限制为 2。然后,您可以使用“has_many through”直接将 Teams 连接到用户,将用户连接到 Teams。这种方法可以让您获得用户的所有比赛,例如:

Competition.joins(teams: {memberships: :users}).where(users: {id: my_user_id})
于 2012-07-05T21:17:51.790 回答