Это действительно зависит от того, насколько конкретно вы хотите получить. Это пустой или ноль? Потому что там есть большая разница. В Ruby пустая строка не оценивается как ложная. Если предположить, что конкретный хэш этой переменной равен nil, это сработает ...
self.profile_pic = user_info['image'] || "default"
self.birthday = user_extra['birthday'] || "default"
self.city = user_extra['location']['name'] || "default"
Или вы можете сделать более общую проверку, чтобы убедиться, что переменная сама по себе не равна нулю, используя троичный оператор ...
self.profile_pic = user_info ? user_info['image'] : "default"
self.birthday = user_extra ? user_extra['birthday'] : "default"
self.city = user_extra ? user_extra['location']['name'] : "default"
Или, если оно на самом деле пустое, а не ноль, что-то еще подобное ...
self.profile_pic = user_info.empty? ? "default" : user_info['image']
self.birthday = user_extra.empty? ? "default" : user_extra['birthday']
self.city = user_extra.empty? ? "default" : user_extra['location']['name']
Это зависит от ваших конкретных условий и от того, насколько далеко вы хотите пройти по кроличьей норе. :) Надеюсь, это поможет!