我有3个表:employees
,projects
和teams
Employee has_many :projects, :through => :teams
Project has_many :employees, :through => :teams
我将roles_id列添加到了team表。
Team belongs_to :role
现在我列出了项目,团队成员和他们的角色。
<% @project.employees.each do |employee| %>
<tr>
<td><%= employee.employee_full_name %></td>
<td><%= employee.team.role.rolecode %></td>
但是,角色线不正确。
有什么建议吗?
答案 0 :(得分:0)
roles_id => role_id
?)或belongs_to :role, :foreign_key => "roles_id"
答案 1 :(得分:0)
您的代码有两个问题:
您的关联不完整。见this explanation
解释了如何建模has_many :through
;
employee has_many teams
,所以你不能说employee.team
。
第一个问题的解决方案是您必须定义以下关联:
class Employee
has_many :teams
has_many :projects, :through => :teams
end
class Project
has_many :teams
has_many :employees, :through => :teams
end
class Team
belongs_to :role
belongs_to :employee
belongs_to :project
end
至于你的第二个问题:一个员工可以属于多个团队,所以你不能做employee.team
。你只能employee.teams
。解决方案是改变你的迭代:
<% @project.teams.each do |team| %>
<tr>
<td><%= team.employee.employee_full_name %></td>
<td><%= team.role.rolecode %></td>