检查nil警告意外的零

我有以下检查nil:

client = !deal['deal']['party']['party'].nil? ? deal['deal']['party']['party']['company_id'] : "" 

但我仍然得到:

当你没想到它时,你有一个零对象! 您可能期望ActiveRecord :: Base的实例。 在评估nil时发生错误。[]

我怎么能阻止这个?

我不认识Ruby,但我认为在.nil之前出错了:

 deal['deal']['party']['party'] ^ ^ ^ 

箭头表示可能的零指数。 例如,如果[“deal”]为零或第一个[“party”]为零,该怎么办?

你可能想看看andand游戏:

http://andand.rubyforge.org/

通过检查!deal.nil? !deal['deal'].nil? !deal['deal']['party'].nil? !deal['deal']['party']['party'].nil?

在每个步骤中,您可以使用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', '')