参见英文答案 >
How to avoid NoMethodError for missing elements in nested hashes,without repeated nil checks?16个
我相信我以前见过这个优雅的解决方案,但我找不到它:
我相信我以前见过这个优雅的解决方案,但我找不到它:
我有一个rails控制器,可能或者可能没有以下hash元素:
myhash[:parent_field]
在该父字段内,子元素也可以为空.我目前通过(非常丑陋的)方法检查:
if (!myhash[:parent_field] || !myhash[:parent_field][:child_field] || myhash[:parent_field][:child_field].blank?)
哪个有效,但我认为 – 当然 – 必须有一个更优雅的方式.只是重申:
> myhash [:parent_field]可能存在也可能不存在
>如果确实存在,myhash [:parent_field] [:child_field]可能存在也可能不存在
>如果存在,则可能是空白,也可能不是空白.
解决方法
#fetch
是你的朋友:
my_hash.fetch(:parent,{})[:child].blank?