微炭酸ログ

Ruby や Rails を中心に。

【Rails】「このメソッド、呼べるなら呼んでくれ」と書くなら respond_to? よりも try を使う

行けたら行く的な。

結論

@person.non_existing_method if @person.respond_to?(:non_existing_method) # => nil

は、

@person.try(:non_existing_method) # => nil

と同じだと、https://api.rubyonrails.org/classes/Object.html#method-i-try にありました。

どういう時に使ったか

なにかしらのモデルオブジェクトを引数にとるメソッドの中で、以下のように使いました。

def xxxx(model)
  if model.try(:method_name)
    # ...

参考