我有以下型号:
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
使用单数词,它有效,但我读到它必须是多元化的
答案 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
我忘记了这些。现在它可以工作