【问题标题】:has_many competitions through teams and inverse_teamshas_many 通过团队和 inverse_teams 进行的比赛
【发布时间】:2012-07-05 17:13:25
【问题描述】:

感谢收看。总菜鸟在这里。对不起!

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

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】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多