Object#tryでインデクサを対象にする
まずはObject#tryについて
def try(method, *args, &block) ・・・ end
なんと!ブロックも使えるのか、知らなかった。
tryを使うと
@object ? @object.name : nil
が
@object.try(:name)
こんな感じで書けるようになります。
モデルのインスタンスを扱う時とかに非常に役立ちます。
で、このオブジェクトがインデクサメソッドを持ってるとして、
@object ? @object["key"] : nil
をtryを使って書くには
@object.try(:"[]", "key")
としてやればOK