Ruby - 未定义的方法`空?为零:NilClass

时间:2012-11-14 18:19:42

标签: ruby ruby-on-rails-3 methods associations string

超过3个小时我试图解决非常简单的错误(乍一看):

undefined method `empty?' for nil:NilClass

但仍未成功。

我有数据库表products,其中包含category_idmanufacturer_id列。

社团:

class Product < ActiveRecord::Base
  belongs_to :manufacturer
  belongs_to :category
  ...
end
class Category < ActiveRecord::Base # the same for Manufacturer
  has_ancestry
  has_many :products

end

尝试抓取一些数据:

Product.where('category_id IS NOT NULL AND manufacturer_id IS NOT NULL').each do |product|
  ...
  puts product.manufacturer.name # here's the error
  puts product.category.name # here's the error
  ...
end

我获取了所有行,manufacturer_idcategory_id列中的NIL值不是......所以如何才能收到此错误?

另外,我试过了:

 ...
  puts product.manufacturer.name unless product.manufacturer_id.nil?
  puts product.category.name unless product.category_id.nil?
  ...

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您很可能删除了制造商或类别,因此没有与外键匹配的相应记录。

答案 1 :(得分:0)

考虑到您的查询,Problably是您数据库中的业务逻辑问题。

恕我直言,你正在调用一些不是有效的对象。检查数据库以查看所有寄存器是否符合验证逻辑。