Igo*_*ins 27 ruby-on-rails associations ruby-on-rails-4
我需要在同一个模型中做两个关联.哪里:
团队 has_many
用户
现在,我想要那个团队 has_one
负责人
这个"领导者"将是一个用户
我试图使用,has_one throught
但我认为这种关联不起作用.
Leader.rb
class Leader < ActiveRecord::Base
belongs_to :user
belongs_to :team
Run Code Online (Sandbox Code Playgroud)
Team.rb
class Team < ActiveRecord::Base
has_one :user, through: :leader
end
Run Code Online (Sandbox Code Playgroud)
User.rb
class User < ActiveRecord::Base
belongs_to :team
has_one :captain
end
Run Code Online (Sandbox Code Playgroud)
并在第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)
Run Code Online (Sandbox Code Playgroud)
Lua*_*n D 24
在这种情况下,我认为你需要2个模型就足够了
1).用户模型
class User < ActiveRecord::Base
belongs_to :team
end
Run Code Online (Sandbox Code Playgroud)
2).团队模型
class Team < ActiveRecord::Base
has_many :users
belongs_to :leader, class_name: 'User', foreign_key: :leader_id
end
Run Code Online (Sandbox Code Playgroud)
如何boolean
在用户表中设置一个名为leader
. 然后你的协会可以变成:
class Team < ActiveRecord::Base
has_many :users
has_one :leader, class_name: 'User', -> { where leader: true }
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5220 次 |
最近记录: |