感谢您的光临。总菜鸟在这里。对不起!
我有一个自我推荐的协会来建立一个有两个用户的团队,并通过团队进行比赛:
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直接属于用户的团队的比赛。
我需要的是团队和反团队的用户竞赛,而不会显示重复的结果。
它可能会简化一些更改模型的步骤。您可以创建用户模型,团队模型和成员资格模型来连接它们。每个成员资格属于一个团队和一个用户。用户具有许多成员资格,而团队也具有许多成员资格。我认为您可以使用验证将其限制为2。然后,您可以使用“ has_many through”将团队直接连接到用户,将用户直接连接到团队。这种方法将使您获得与用户类似的所有竞争:
Competition.joins(teams: {memberships: :users}).where(users: {id: my_user_id})