0

我有 3 张桌子employeesprojectsteams

Employee has_many :projects, :through => :teams
Project has_many :employees, :through => :teams

我将角色 ID 列添加到团队表中。

Team belongs_to :role

现在我列出项目、团队成员及其角色。

<% @project.employees.each do |employee| %>
  <tr>
    <td><%= employee.employee_full_name %></td>
    <td><%= employee.team.role.rolecode %></td>

但是,角色行不正确。

有什么建议么?

4

2 回答 2

0

roles_id => role_id?) 或者belongs_to :role, :foreign_key => "roles_id"

于 2012-05-18T14:00:43.450 回答
0

您的代码有两个问题:

  1. 您的关联不完整。请参阅解释如何建模 a 的解释has_many :through

  2. 一个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>
于 2012-05-18T14:53:51.927 回答