1

我有一个公司课程:

class Company < ActiveRecord::Base
    validates :name, :presence => true
    has_many :employees
end

以及员工只能与一家公司关联的员工类:

class Employee < ActiveRecord::Base
    validates :lastName, :presence => true
    belongs_to :company
    validates :company, :presence => true
end

当我列出员工时,

<% @employees.each do |employee| %>
  <tr>
    <td><%= employee.firstName %></td>      <- works
    <td><%= employee.lastName %></td>       <- works
    <td><%= employee.company.name  %></td>  <- Get an 'undefined method `name' for nil:NilClass' error
  </tr>
<% end %>

我认为员工公司已被急切地加载,因此我可以直接在对象中访问关联,还是我的语法错误?

任何帮助,将不胜感激

4

2 回答 2

2

我可以想到两种情况:

  1. company_id = NULL.

  2. company_id = ID但是这个id的公司已经不存在了。

无论如何,在控制台中检查有问题的对象是微不足道的:Employee.reject(&:company)

于 2012-12-06T23:20:44.740 回答
0

由于员工属于公司,您应该从公司本身加载员工。就像是:

class EmployeeController < ApplicationController

  def index
    @employees = @company.employees
    ...
  end
  ...
end
于 2012-12-06T23:25:34.470 回答