0

私は3つのテーブルを持っています: employeesprojectsおよび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>

しかし、役割線が間違っています。

助言がありますか?

4

2 に答える 2

0

コードには2つの問題があります。

  1. 関連付けが不完全です。;をモデル化する方法を説明するこの説明を参照してください。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

2つ目の問題は、従業員が複数のチームに所属する可能性があるため、所属できないことです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 に答える
0

roles_id => role_id?) またbelongs_to :role, :foreign_key => "roles_id"

于 2012-05-18T14:00:43.450 に答える