我对nil进行了以下检查:
client = !deal['deal']['party']['party'].nil? ? deal['deal']['party']['party']['company_id'] : ""
但我仍然得到:
当你没想到它时,你有一个零对象! 您可能期望ActiveRecord :: Base的实例。 在评估nil。[]
时发生错误
我该如何防止这种情况?
答案 0 :(得分:4)
我不认识Ruby,但我认为在.nil:
之前出错了deal['deal']['party']['party']
^ ^ ^
箭头表示可能的零指数。例如,如果[“deal”]为零或第一个[“party”]为零,该怎么办?
答案 1 :(得分:2)
选中!deal.nil?
和!deal['deal'].nil?
以及!deal['deal']['party'].nil?
和!deal['deal']['party']['party'].nil?
答案 2 :(得分:2)
您可能需要查看andand
游戏:
答案 3 :(得分:0)
在每个步骤中,您可以使用NilClass
中内置的适当方法来逃避nil,如果它是数组,字符串或数字。只需将to_hash
添加到此列表的清单中即可使用它。
class NilClass; def to_hash; {} end end
client = deal['deal'].to_hash['party'].to_hash['party'].to_hash['company_id'].to_s
你也可以这样做:
client = deal.fetch('deal', {}).fecth('party', {}).fetch('party', {}).fetch('company_id', '')