超过3个小时我试图解决非常简单的错误(乍一看):
undefined method `empty?' for nil:NilClass
但仍未成功。
我有数据库表products
,其中包含category_id
和manufacturer_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_id
和category_id
列中的NIL值不是......所以如何才能收到此错误?
另外,我试过了:
...
puts product.manufacturer.name unless product.manufacturer_id.nil?
puts product.category.name unless product.category_id.nil?
...
我做错了什么?
答案 0 :(得分:1)
您很可能删除了制造商或类别,因此没有与外键匹配的相应记录。
答案 1 :(得分:0)
考虑到您的查询,Problably是您数据库中的业务逻辑问题。
恕我直言,你正在调用一些不是有效的对象。检查数据库以查看所有寄存器是否符合验证逻辑。