ともブロ。

Rails, Vue.js, React.js, JavaScript等、日々学んだ技術・知識を備忘録的に記していきます。

class << self について

通常、モデル内(class)にdef~という形で書くと、 それはインスタンスメソッドとなる。インスタンスメソッドはそのモデル内で使用できる。

ではモデル内でよく見る「class << self」とは何か?

class << self

 def クラスメソッド

 end
end

上記のような場合、 class<<selfからend内に書かれたメソッドはクラスメソッドとなる。

クラスメソッドとして定義したい場合、他に

def self.メソッド

end

のように、メソッドの前にself.を書く方法がある。 両者とも効果は同じだが、何度もクラスメソッドを書く場合は、前者のように一段ネストした方がよい。

Rubyスタイルガイドでは、後者のようにself.メソッドという書き方が推奨されている・・・が、状況に応じて選べばいいのではないかと思った。