我有这个
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(性别)
有没有办法在不使用变量的情况下执行此操作(因为它会变得更加混乱)
答案 0 :(得分:4)
我认为执行此操作的标准方法是使用reverse_merge:
auth.reverse_merge! {:extra => { :raw_info => { :gender => "Male" } } }