71

メソッドが存在する場合にのみメソッドを呼び出すための隠された Ruby/Rails マジックはありますか?

電話したいとしましょう

resource.phone_number

しかし、リソースが に応答するかどうかは事前にわかりませんphone_number。これを行う方法は

resource.phone_number if resource.respond_to? :phone_number

間違った場所で使用すると、それほどきれいではありません。tryの使い方( )の線に沿って、より機能するものが存在するかどうか、私は興味がありますresource.try(:phone_number)

4

5 に答える 5

17

試してみますdefined?http://ruby-doc.org/docs/keywords/1.9/Object.html#defined-3F-method)。あなたが求めていることを正確に行うようです:

resource.phone_number if defined? resource.phone_number
于 2015-11-06T08:26:13.383 に答える
13

私はこれが非常に古い投稿であることを知っています。しかし、これが可能な答えであるかどうか、そして影響が同じかどうかを知りたかっただけです.

resource.try(:phone_number) rescue nil

ありがとう

于 2014-12-10T06:58:28.107 に答える