Просто для удовольствия
Сверните свои собственные:
# concerns/deep_try.rb
module DeepTry
def deep_try(*methods)
methods.reduce(self) { |receiver, method| receiver.try(method) }
end
end
# user.rb (or anywhere else you want it)
extend DeepTry
Это позволит вам безопасно позвонить по следующему номеру:
User.deep_try(:profile, :settings, :card, :options)
Выможно также использовать на уровне экземпляра:
@user.extend(DeepTry).deep_try(:profile, :settings, :card, :options)