ruby-on-rails – 优雅地处理嵌套哈希中的空白值

参见英文答案 > 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?

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...