优雅地处理嵌套哈希中的空白值

Pla*_*Ton 6 ruby ruby-on-rails

我相信我以前见过这个优雅的解决方案,但我找不到它:

我有一个rails控制器,可能或者可能没有以下hash元素:

myhash[:parent_field]
Run Code Online (Sandbox Code Playgroud)

在该父字段内,子元素也可以为空.我目前通过(非常丑陋的)方法检查:

if (!myhash[:parent_field] || !myhash[:parent_field][:child_field] || myhash[:parent_field][:child_field].blank?)
Run Code Online (Sandbox Code Playgroud)

哪个有效,但我认为 - 当然 - 必须有一个更优雅的方式.只是重申:

  • myhash [:parent_field]可能存在也可能不存在
  • 如果确实存在,myhash [:parent_field] [:child_field]可能存在也可能不存在
  • 如果存在,则可能是空白,也可能不是空白.

d11*_*wtq 9

#fetch 是你的朋友:

my_hash.fetch(:parent, {})[:child].blank?
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

2585 次

最近记录:

14 年,1 月 前