Skip to main content
 首页 » 编程设计

ruby-on-rails之如何在同一模型中进行 has_many 和 has_one 关联

2024年10月25日6over140

我需要在同一个模型中做两个关联。在哪里:

团队 has_many 用户
现在,我想要那个 团队 has_one 领队

这个“领导者”将是一个用户

我正在尝试使用 has_one throught但我认为这种关联是行不通的。

领导者.rb

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

团队.rb
class Team < ActiveRecord::Base 
has_one :user, through: :leader 
end 

用户名
class User < ActiveRecord::Base 
 
belongs_to :team 
has_one :captain 
 
end 

并在第 27 行附近出现以下错误:
NoMethodError in TeamsController#create 
 
26 def create 
 
**27 @team = current_user.teams.create(team_params)** 
 
28 @team.save 
 
29 respond_with(@team) 
 
30 current_user.update(team_id: @team.id) 

请您参考如下方法:

在这种情况下,我认为您需要 2 个模型就足够了

1)。用户模型

class User < ActiveRecord::Base 
   belongs_to :team 
end 

2)。团队模式
 class Team < ActiveRecord::Base 
   has_many :users 
   belongs_to :leader, class_name: 'User', foreign_key: :leader_id 
 end