有许多通过团队和反向团队参加的比赛

问题描述 投票:0回答:1

感谢您的光临。总菜鸟在这里。对不起!

我有一个自我推荐的协会来建立一个有两个用户的团队,并通过团队进行比赛:

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

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

ruby-on-rails ruby-on-rails-3.2
1个回答
0
投票

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

Competition.joins(teams: {memberships: :users}).where(users: {id: my_user_id})
© www.soinside.com 2019 - 2024. All rights reserved.