好的,在我的实际邮件代码中,我已经采取了下面的临时权宜之计:
if Rails.env == "test"
@requestlist["#{index}"] = {"#{Itemlist.find_by_id(b.itemlist_id).name}" => "#{Inventory.find_by_id(b.inventory_id)}"}
else
@requestlist["#{index}"] = {"#{Itemlist.find_by_id(b.itemlist_id).name}" => "#{Inventory.find_by_id(b.inventory_id).signup.email}"}
end
这非常奇怪,因为:
NoMethodError
NilClass
,'注册'
Inventory
显然不是Nil
(我的意思是如果Signup
对象没有找到它会有所不同...... ).signup.email
signup.email
Inventory
的其他测试才能通过思想?
答案 0 :(得分:0)
首先,为什么不写作?
@requestlist[index] = { Itemlist.find_by_id(b.itemlist_id).name => Inventory.find_by_id(b.inventory_id).signup.email }
其次,您没有怀疑NilClass的NoMethodError可能意味着
Inventory.find_by_id(b.inventory_id)
不会从数据库中返回任何行吗?
第三,它是if
并尝试"修复tests? (btw you can write
Rails.env.test?`)