rails - 复数has_many上的HasManyThroughAssociationNotFoundError

时间:2016-03-12 11:01:49

标签: ruby-on-rails ruby

我有以下型号:

User
Team
UserTeam

有用户和团队。每个团队有0个或更多用户,连接表是UserTeams

我希望所有团队和每个团队都能获得其用户。最初我尝试过一个团队并获得其用户,比如

Team.find('759ccbb7-2965-4558-b254-3e437ca721aa').users

但是rails抱怨这个:

Could not find the association :user_team in model Team

这就是我的团队模型的样子:

class Team < ActiveRecord::Base
  has_many :users, through: :user_team
  has_many :user_teams, dependent: :destroy

  accepts_nested_attributes_for :user_teams, :reject_if => lambda { |a| a[:user_id] == '0' }

  validates :name, presence: true
end

团队模型:

class UserTeam < ActiveRecord::Base
  belongs_to :team
  belongs_to :user

  validates :user_id, presence: true
end

很奇怪,如果我像这样改变团队模型:

has_many :user_team

使用单数词,它有效,但我读到它必须是多元化的

2 个答案:

答案 0 :(得分:0)

只需改变一下:

  has_many :users, through: :user_team
  has_many :user_teams, dependent: :destroy

  has_many :user_teams, dependent: :destroy
  has_many :users, through: :user_teams

through部分应使用现有关联。

在您的代码中,您指定了through :user_team,但您没有has_many :user_team,这就是为什么rails抱怨的原因。

答案 1 :(得分:0)

解决方案是将这些放在用户模型中:

has_many :user_teams
has_many :teams, through: :user_teams

我忘记了这些。现在它可以工作