假设我从 API 取回 JSON 嵌套哈希(或哈希数组)
@example = {"results" = > {{"poop" => "shoop"},{"foo" => {"shizz" => "fizz", "nizzle"=>"bizzle"}}}
上面嵌套哈希的 YAML 标记
- poop: shoop
- foo:
shizz: fizz
nizzle: bizzle
现在让我们从散列中使用 ActiveRecord 创建一个数据库条目。这工作正常。
Thing.create!(:poop => @example["results"]["poop"],
:shizz => @example["results"]["foo"]["shizz"],
:nizzle=> @example["results"]["foo"]["nizzle"])
但是如果 'foo' 为空或 nil 怎么办?例如,如果一个 API 结果有一个带有“first name”、“last name”# 等的“person”哈希,如果没有数据,“person”哈希通常为空,这意味着它里面的哈希不存在。
@example = {"results" = > {{"poop" => "shoop"},{"foo" => nil }}
Thing.create!(:poop => @example["results"]["poop"],
:shizz => @example["results"]["foo"]["shizz"],
:nizzle=> @example["results"]["foo"]["nizzle"])
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]
处理这个问题的最佳方法是什么?