2013-08-29 7 views
0

Я этоиспользуя спасение в переменной присвоения

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

аутентификации является хэш, который выглядит следующим образом

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

иногда, по какой причине, пол не существует, и я хочу иметь значение по умолчанию для него, когда я создаю новый пользовательский

Если я пытаюсь

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

но сам пол не существует, и я не могу try на полу

использованием gender: auth.extra.raw_info.gender.capitalize rescue "Male"

также не работает, так как он говорит, что я не могу использовать выгоду ноль (который гендер)

есть ли способ сделать это без использования переменной для этого (так как она станет грязнее)

ответ

4

Я думаю, что стандартный способ сделать это состоит в использовании reverse_merge:

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

так что добавление поля в хэш только в том случае, если оно не существует? –

+0

Точно. «Выполняет противоположное слияние, при этом ключи и значения от первого хеша имеют приоритет над вторым». – Yanhao