在变量赋值中使用rescue

时间:2013-08-29 06:29:12

标签: ruby rescue

我有这个

User.new ( gender: auth.extra.raw_info.gender.capitalize, ...)

auth是一个看起来像这样的哈希

auth => {:extra => { :raw_info => { :gender => ... , .. }, ..} ..}

有时,无论出于何种原因,性别都不存在,我希望在创建新用户时为其设置默认值

如果我尝试

gender: auth.extra.raw_info.gender.try(:capitalize) || "Male"

但性别本身并不存在,我不能try性别

使用gender: auth.extra.raw_info.gender.capitalize rescue "Male"

也不起作用,因为它说我不能使用nil(性别)

有没有办法在不使用变量的情况下执行此操作(因为它会变得更加混乱)

1 个答案:

答案 0 :(得分:4)

我认为执行此操作的标准方法是使用reverse_merge

auth.reverse_merge! {:extra => { :raw_info => { :gender => "Male" } } }