1

Company クラスがあります。

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

従業員を 1 つの会社にのみ関連付けることができる従業員クラス:

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

私は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 に答える