【问题标题】:using rescue in variable assignment在变量赋值中使用救援
【发布时间】:2013-08-29 06:29:12
【问题描述】:

我有这个

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 上使用大写(这是性别)

有没有办法在不使用变量的情况下做到这一点(因为它会变得更加混乱)

【问题讨论】:

    标签: ruby rescue


    【解决方案1】:

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

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

    【讨论】:

    • 所以只有当它不存在时才将性别添加到哈希中?
    • 没错。 “执行与合并相反的操作,第一个哈希中的键和值优先于第二个。”
    猜你喜欢
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 2021-10-24
    相关资源
    最近更新 更多