水谷の日記

いろいろ書きます

RuboCopさんが教えてくれたRailsメソッド


<この記事ではRailsのメソッド「presence」について書きます。>



今日の出来事。

何気なくコード書いてpushしたらCIで働いてるRuboCopさんに、とあるコードを書き換えてくれとご指摘をいただきました。

↓ 指摘をくらったコード

  hoge = if a.present?
          a
         else
           b
         end


[変数 a]があれば[変数 hoge]に[変数 a]を代入し、なければ[変数 hoge]に[変数 b]を代入するコード。

これを見てRuboCopさんは「presence」メソッド使った方がいいんじゃね?と言ってきました。

↓「presence」のソースコード

 def presence
   self if present?
 end


レシーバに対してpresentを実行してtrueであれば、

レシーバ自身を返し、falseならnilといった動きでした。

↓ そして改善したコード

 hoge = a.presence || b


圧倒的コードの短さw

Railsと上手に付き合うにはこういったコードを短く書けることに快感を覚えなきゃならんですね。


どうでもいいですけど、最近はRuboCopさんに対する好感度高いです。

はじめの頃はやたら細かい指摘してくる前職にいた40近くのおじさんのようで嫌でしたが。

github.com